Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)

23 julho, 2007

Rake - Um Ajudante da Automatização das Tarefas

Necessita de automação? Use Rake ou Sake!

Para quem não conheça o Rake é uma linguagem de domínio específico escrita em Ruby.

Neste artigo vou introduzir a rake e descrever algumas pistas para automatização de tarefas repetitivas que se fazem no dia a dia.

Teoria

A Rake foi desenvolvida por Jim Weirich e baseia-se em Ruby, o que quer dizer que temos acesso completo às capacidades da Ruby de dentro da Rake. A Rake não está limitada aquilo que conhece em ferramentas similares é muito mais poderosa e flexível (isto é aliás um sinal de perigo).

A Rake funciona à base de dependências. Quando se escreve um guião Rake iremos dizer-lhe que uma dada tarefa depende de outra e assim sucessivamente. Deste modo podemos construir uma receita completa para explicar como fazer as coisas e a respectiva ordem de execução.

Como a Rake é construída em Ruby podemos fazer o que quisermos nas suas tarefas:

  • manipular ficheiros
  • compilar os nossos programas
  • limpar o nosso (do computador claro) sistema de ficheiros
  • gerar esqueletos de aplicações
  • e ainda muito mais

Primeira Tentativa: Adicionar uma tarefa e fazer com que seja executada por omissão


task :default => [:ola]
desc "Esta é a nossa primeira tarefa"
task :ola do
  puts "Olá! Sou a primeira tarefa escrita por nós!"
end

desc "Execução de Teste"
task :test do 
  require 'rake/runtest'
  Rake.run_tests 'tests/*.rb'
end

Na primeira linha dizemos ao rake que a nossa tarefa por omissão, a que é chamada quando usamos rake na linha de comando sem aditivos será a tarefa designada por ola. Pode ainda tentar chamar-se explicitamente essa tarefa usando o comando rake ola

Depois na linha seguinte descrevemos a tarefa que vamos executar. Esta descrição irá ser impressa quando usamos o comando rake -T para ficarmos a saber quais as tarefas disponíveis no nosso Rakefile.

Finalmente definimos a nova tarefa ola usando a palavra chave task. Aquilo que colocamos dentro da tarefa é código Ruby perfeitamente normal.

A Rake oferece algumas capacidades de manipulação de ficheiros, criação de gemas e coisas que tais. Deve ler a sua API para mais informação.

Usamos essas capacidades para a tarefa testes ao carregar a biblioteca distribuida com a Rake e chamando um desses métodos. Por exemplo estamos a carregar a biblioteca runtest e executar cada ficheiro de teste que se encontre na pasta de "tests".

Encadear tarefas


task :carregar_ficheiros do
  # fazer o carregamento
end

task :ligacaossimbolicas => :carregar_ficheiros do
  # criar ligações simbólicas do lado do servidor
end

task :instalar => :ligacaossimbolicas do
  # instalar a última revisão do nosso projecto
end

Agora temos uma série de tarefas que podemos usar. Se escrevermos rake instalar, essa tarefa irá chamar a tarefa ligacoessimbolicas que depende da tarefa carregar_ficheiros. Assim a Rake irá executar a tarefa carregar_ficheiros em primeiro lugar, depois a tarefa ligacoessimbolicas e depois instalar.

É assim que pode encadear tarefas e assegurar-se que todos os passos exigidos são executados antes de executar o que está a pedir ao Rake.

Conclusão

Se começar a usar Rake para automatizar as suas tarefas rapidamente compreenderá que é uma ferramenta poderosa e fácil de usar. Uma das coisas mais interessantes é que a Rake foi construída em Ruby e que Ruby pode correr em qualquer sistema operativo. Claro que saber Ruby irá ajudar a aprender realmente a usar a Rake e a escrever a suas próprias tarefas simples mesmo que seja s o um principiante em Ruby.

A Rake não é só para utilizadores de Ruby, pode ser usada para montar programas em C, limpar o sistema de ficheiros, instalações, administração das suas bases de dados, ...

Sem comentários: