[Capistrano] rake task 実行用レシピ

Capistrano で rake task を実行するためのレシピをメモ。

namespace :rake do
  desc "Run a task on a remote server."
  # run like: cap staging rake:invoke task=db:seed_fu
  task :invoke do
    run("cd #{deploy_to}/current; rake #{ENV['task']} RAILS_ENV=#{rails_env}")
  end
end

例えば、rake db:version を Capistrano 経由で実行したい場合は下記のような感じ。

% cap staging rake:invoke task=db:seed_fu

namespace が衝突?してしまったため、rake から rake_task へ変更

namespace :rake_task do
  desc "Run a task on a remote server."
  # run like: cap staging rake:invoke task=db:seed_fu
  task :invoke do
    run("cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake #{ENV['task']}")
  end
end

以上です。

【参考】ruby – How do I run a rake task from Capistrano? – Stack Overflow はてなブックマーク - ruby - How do I run a rake task from Capistrano? - Stack Overflow