Padrinoで任意のrakeタスクを追加する

Padrinoでは、rakeタスクを実行したい場合、特にRakefileを配置しなくてもrakeコマンドを付与することで実行することができる。

$ padrino rake (実行したいrakeタスク)

rakeタスク自体は、Padrinoの場合、

  • ~/lib/tasks
  • ~/tasks
  • ~/test
  • ~/spec

に配置されれば、自動的に再起探索されて実行される。
また、Padrinoのプロジェクトで利用しているmongoid等で作られたmodelなどはそのまま使えるので例えば、

# ~/tasks/test.rake 
#encoding: utf-8
task :default => "test"

desc 'rakeタスクのテスト'
task :test do
  oneuser = User.find(:first, :conditions=>{:user_id=>'123'})
  p oneuser
end

とすれば、

$ padrino rake test
=> Executing Rake test ...
#<User _id: 500a5fbf7fae1d624f000001, _type: nil, created_at: 2012-07-21 07:52:31 UTC, updated_at: 2012-07-21 07:52:31 UTC, user_id: 123, name: "hideack">

といった具合に流用できる。