RSS Feed

[Quick Post] – Construindo suas próprias tarefas com o Rake

26/10/2011 by urieljuliatti

Muitos utilizam o rake sem ao menos saber o que ele é. Você mesmo já deve estar acostumado a rodar o comando rake db:migrate , certo?

Bem, o objetivo desse post não é explicar em detalhes o que é o rake, mas sim em como customizá-lo. Portanto, de forma resumida, ele é nada mais do que uma gem que quando instalada utiliza-se do executável ‘rake’ para demandar suas tarefas. A idéia é de que funcionasse como o ‘make’ do Unix, ou seja, um Ruby Make, se assim posso dizer hehe. Contudo, entre piadinhas ruins a parte, o rake é responsável por executar tarefas em sua aplicação.

O rails precisa que você executa o rake a partir da raiz do projeto para que ele acesse o seu RakeFile. Só por uma questão de investigação, abra o seu RakeFile:

1
2
3
4
require File.expand_path('../config/application', __FILE__)
require 'rake'
 
Project::Application.load_tasks</pre>
require File.expand_path('../config/application', __FILE__)
require 'rake'

Project::Application.load_tasks</pre>

A partir daí, ele prepara o ‘ambiente’ para todas as tarefas que existirem, customizadas ou não.

Customizando.

O acesso que você possui para customizar tarefas é em /lib/tasks. Neste exemplo, vou mostrar como configurar uma tarefa de seed específico para um rake db:seed, veja o resultado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# libs/tasks/
namespace :db do
   # poderia ser qualquer outra coisa que seguisse os padrões do :db
   namespace :seed do
      # qualquer coisa.
      task :galeria => :environment do
         #exemplo desabilitando uma galeria
         galeria = Attribute.find_by_name('Galeria')
         if galeria
            galeria.update_attributes(:code => 1, :name => "Galeria", :installed => 0)
            galeria.save
         end
     end
  end
end
# libs/tasks/
namespace :db do
   # poderia ser qualquer outra coisa que seguisse os padrões do :db
   namespace :seed do
      # qualquer coisa.
      task :galeria => :environment do
         #exemplo desabilitando uma galeria
         galeria = Attribute.find_by_name('Galeria')
         if galeria
            galeria.update_attributes(:code => 1, :name => "Galeria", :installed => 0)
            galeria.save
         end
     end
  end
end

Ao executar rake db:seed:galeria, vou ter minha galeria desabilitada.

É isso aí e até o próximo!

Referências:

http://databasically.com/2008/08/03/rake-list-tasks/ | Lista com várias tasks para :db

http://www.tutorialspoint.com/ruby-on-rails/rails-and-rake.htm

http://akitaonrails.com/2009/02/16/automatizando-tarefas-com-ruby-e-rake


No Comments »

No comments yet.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">