Trabalhando com o Rake para facilitar a vida.
O que é Rake o Batista?
O Rake é um gerenciador de tarefas e dependências, são especificadas na sintaxe padrão do Ruby simples assim.
O Rake possui os seguintes recursos:
- Os usuários podem especificar tarefas com pré-requisitos.
- O Rake suporta padrões de regras para sintetizar tarefas implícitas.
- FileLists flexíveis que agem como matrizes, mas sabem como manipular nomes de arquivos e caminhos.
- Uma biblioteca de tarefas pré-empacotadas para facilitar a criação de arquivos de criação.
- Suporta execução paralela de tarefas.
Agora vamos a prática.
1 Passo
Instalando a gem rake:
gem install rake
ou ao invés disso adicione a gem no seu Gemfile e de bundle install:
2 Passo
Crie um arquivo chamado “Rakefile” dentro da sua pasta raiz:
Dentro do Rakefile adicione os seguintes Requires:
Caso use um projeto com Cucumber:
Caso use um projeto com Rspec:
Você já teve que rodar comandos enormes no terminal varias vezes para rodar um projeto em Cucumber ou Rspec e acha isso desgastante com o rake ele vai facilitar a sua vida, porque com ele consigo adicionar tarefas e rodar com um simples comando veja um exemplo abaixo:
Em um projeto Cucumber pra rodar umas determinadas tags eu teria que adicionar o seguinte comando no terminal
cucumber -t @primeira_tag @segunda _tag @terceira_tag
E em um projeto Rspec você quer rodar uma determinada spec:
rspec spec/cadastrar_usuario_spec.rb
Ficar rodando isso toda hora e muito chato? Então vamos otimizar esses dois comando com o rake!
Para criar uma tarefa com o rake e simples veja o exemplo abaixo:
Exemplo com Rspec:
Exemplo com Cucumber:
Mas Batista o que são esses comandos, vou explicar:
desc — É onde você vai descrever o que está sendo feito no metodo task.
task — É o bloco onde executaremos as tarefas.
:cadastro / :tag_unicas — É o nome que colocamos do metódo para podermos executar as tarefas(Obs: O nome pode ser o que vc quiser).
sh — É um comando para pode rodar comandos no terminal.
Agora como faço para rodar os exemplos acima?
Exemplo com cucumber:
Rake tag_unicas
Exemplo do rspec:
Rake cadastro
Pronto projeto rodando com menos comandos.
Assim você consegue diminuir a quantidade de digitos para rodar apenas um comando.
Mas uma dúvida Batista é possível passar parametros nas tarefas?Sim veja o exemplos abaixo:
Assim estou passando uma variável ambiente onde no comando do rake posso dizer qual seu ambiente, para rodar no terminal seria esse comando:
Rake fast’[testes]’
Com esse comando estarei rodando em um ambiente de testes.
Última duvida Batista e possível rodar vários comandos de uma vez?Sim veja o exemplo abaixo:
Assim ele vai executar primeiro o cd testes depois irá executar o bundle exec cucumber.
Viu como e simples :)