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