Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Usando parametros da linha de comando no Rake e no Capistrano

Pessoal, segue abaixo uma tradução livre de um post interessante que explica como você pode usar parametros da linha de comando dentro de sua task do RAKE ou do CAPISTRANO. O original se encontra aqui
todos os projetos que já trabalhei até hoje exigem um bom número de task em RAKE e CAPISTRANO. Desde que meus modelos são tão grandes quanto necessário, estas task e receitas são em geral pequenas e procuram fazer pouco lógica delegando para o modelo apropriado…
O que desejo é falar sobre é que sempre estamos precisando passar parametros para estas tasks, e na maioria das vezes é bastante escassa as documentações para fazer isso.
Imagine que você quer fazer algo como:

rake options:show opt1=value1

E dentro da task deseja pegar esse valor e fazer algo. Para resolver fica mais ou menos assim:

namespace :options do

  desc "Show how to read in command line options"
  task :show do
    p "option1 is #{ENV['opt1']}"
  end

end

Usando parametros da linha de comando do Capistrano:
Aqui as coisas são um pouco diferente. É necessário que use a opção -s na linha de comando para ativar a função de parser do chave/valor. Veja o exemplo abaixo:

cap -a show_options -s opt1=value1

Assim você um dicionário dentro do capistrano (receita) que a chave é opt1 e o valor dele é value1. voce pode acessar diretamente a chave por causa do method-missing que implementa isso para você. Fica assim o código.

task :show_options do
  p "option1 is #{opt1}"
end

Para maiores detalhes veja o artigo original e leia a documentação do Capistrano. Fiquem a vontade para comentar e assim que puder respondo.

Published by Andre, on setembro 6th, 2011 at 11:46 am. Filled under: ruby Tags: , , , , 2 Comments

Instalando RVM

O RVM é uma forma de criar diversos ambientes de ruby (ambiente Virtuais) de forma isolado um do outro. Assim podemos ter um ambiente para cada projeto nosso e evitar que alguma gem entre em conflito com outro projeto.
Para instalar é bem fácil e basta seguir as instruções do site do produto (clique aqui para ver)
No seu terminal digite o comando para baixar e instalar:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

Fique atento que o comando acima precisa do git instalado. Depois disso, no meu caso, preciso de várias versões do ruby na minha máquina. Uma delas é o Ruby Enterprise. Para instalá-los, faça:

andre.fonseca@mac179016 ~ $ rvm install ree
Installing Ruby Enterprise Edition from source to: /Users/andre.fonseca/.rvm/rubies/ree-1.8.7-2011.03
ree-1.8.7-2011.03 - #fetching (ruby-enterprise-1.8.7-2011.03)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 7713k  100 7713k    0     0   545k      0  0:00:14  0:00:14 --:--:-- 1499k

Esse comando de cima irá instalar o REE. O resto das distribuições deve procurar pelo nome (1.9 –> ruby-1.9.2, por exemplo).
Por fim, você pode criar um gemset (pasta de gems) para cada projeto. Para isso use os comandos (no meu exemplo abaixo estou criando um gemset chamado participacoes, para um projeto meu)

rvm gemset create participacoes
rvm gemset use participacoes

Agora é acessar meu projeto e dar um bundle install para instalar minhas Gems. Prontinho e tudo funcionando.

Published by Andre, on junho 3rd, 2011 at 5:07 pm. Filled under: ruby Tags: , , , No Comments

Introdução de teste JavaScript com Jasmine

No dia 18 de junho vai rolar a primeira edição do evento FrontinRio. Ele foi primeiramente idealizado pelo Leonardo Balter(@leobalter), e foi organizado por diversas pessoas como Ramon Page, Rafael Tauí, Bernard de Luna, eu, etc. Esse evento é totalmente focado em desenvolvimento da parte cliente de aplicações web – conhecido pela galera como desenvolvimento Front ou Client.
Recomendo muito a galera ir. Vai ser um dia muito legal com gente altamente compartilhando suas experiências, trazendo novidades e como são seus dias a dias de projetos e empresa.
Eu serei um dos que irá apresentar nesse evento. O assunto será Jasmine. Jasmine é uma biblioteca de teste para JavaScript. Ele é mais focado no princípio de BDD (Behavior Driven Dev.) do que em TDD. Sendo assim apresenta uma sintaxe, que eu pessoalmente gosto muito, para escrever teste que fica bastante elegante poderoso. Além disso oferece suporte a testes assíncronos e spies (bibliotecas para “espionar” chamadas de métodos e fazer mock) de forma muito simples.
Para quem desenvolve com Ruby, verá a forma de escrever suas especificação é muito semelhante ao RSpec. Veja o exemplo abaixo:

describe("Aqui vai uma descricao", function(){
  it ("linha de teste", function(){
    expect(true).toBeTrue();
  }
}

Outra coisa legal dessa biblioteca é que ela não precisa de um DOM (simplificando seria que ela não precisa de uma página) para executar. E é totalmente auto-contida: só precisa dela mesma para funcionar e nenhuma outra biblioteca.
Se você quiser usar ainda dentro de um projeto Ruby(com rake), o próprio projeto possui uma gem para instalar que torna o processo ainda mais suave e fácil de ser feito.
Jaba feito fica agora o convite para ver minha palestra no dia 18 de junho para conhecerem o restante do Jasmine.

Published by Andre, on junho 2nd, 2011 at 2:54 pm. Filled under: ruby,TDD Tags: , , , , , No Comments

Setup Ambiente Ruby – instalando homebrew e git

Uma das coisas que mais admiro no Ubuntu é o sistema de gerenciamento de pacotes. Instalar, atualizar, desinstalar, etc no Ubuntu é tão simples quando uma comanda no console: “sudo apt-get install”. O problema é que para outros sistemas operacionais, como o MacOs isso não é tão simples. Na Globo.com, fui apresentado ao homebrew. Ele é muito legal, tem muitas formúlas(receitas de instalação) e é fácil de gerenciar e manter. Para instalar:

ruby -e "$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)"

Para instalar algumas bibliotecas, o brew, por algumas vezes usa, no caso do MacOS, o pacote XCode para compilar. Assim, você terá que instalar o XCode no seu sistema. Se tem o cd original do seu mac, ele estará lá para instalar. Caso não tenha, você pode usar a AppStore do Mac para instalar.
Existem caminhos alternativos para instalá-lo. Mas não recomendo.
Uma vez que tenha instalado o homebrew na sua máquina com sucesso, para usá-lo basta usar o comando brew. Teste no seu console e ele deverá ter uma saída semelhante a:

andre.fonseca@pimpao-computer ~/projects/participacoes/puppet/deploy $ brew
Usage: brew [-v|--version] [--prefix [formula]] [--cache [formula]]
[--cellar [formula]] [--config] [--env] [--repository]
[-h|--help] COMMAND [formula] ...

Principal Commands:
install formula ... [--ignore-dependencies] [--HEAD]
list [--unbrewed|--versions] [formula] ...
search [/regex/] [substring]
uninstall formula ...
update

Other Commands:
info formula [--github]
options formula
deps formula

Bom agora temos uma excelente ferramenta para instalarmos as coisas de forma simples, para montarmos nosso setup. A segunda coisa sem a qual eu não acho que tenhamos um ambiente completo é o Git. O git é um controle de versão descentralizado. Se você não está familiariado com ele, sugiro que estude, pois isso irá mudar completamente a sua forma de ver controles de versões. Acredito que já alguns post meus sobre o assunto, caso não aguarde e peçam ajuda ao google.
Voltando, vamos instalar o git em nossa máquina e assim começar. Para isso use o comando:

brew install git

Isso é tudo. Agora você já tem todo o git funcionando na sua máquina. Eu também gostou muito de colocar alguns atalhos para o git, para isso, eu adiciona “alias” no meu arquivo de bash_profile, desse jeito:

echo alias gpush="git push origin master" &gt; ~/.bash_profile
echo alias gpull="git pull origin master" &gt; ~/.bash_profile
echo alias gst="git status" &gt; ~/.bash_profile
echo alias gcm="git commit -am " &gt; ~/.bash_profile
echo alias gcko="git checkout " &gt; ~/.bash_profile

Para o começo ficamos por aqui. No próximo post mostrarei como instalar o RVM e gems para o seu projeto. No github do projeto tem um bom tutorial indicando como fazer. Para facilitar faça o comando abaixo no seu terminal:

Published by Andre, on maio 12th, 2011 at 3:56 pm. Filled under: agil,ruby Tags: , , , No Comments