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 deste artigo não é explicar em detalhes o que é o rake, mas, sim, como customizá-lo. De forma resumida, o rake é nada mais do que uma gem, que quando instalada utiliza-se do executável ‘rake’ para demandar suas tarefas. A ideia é que ele funcionasse como o ‘make’ do Unix, ou seja, um Ruby Make, se assim posso dizer. Contudo, o rake é responsável por executar tarefas em sua aplicação.
O rails precisa que você execute o rake a partir da raíz do projeto, para que ele acesse o seu RakeFile. Só por uma questão de investigação, abra o seu RakeFile:
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.
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:
# 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.
Pronto!
Referências:
Lista com várias tasks para :db