У меня уже есть deploy.rb, который может развернуть мое приложение на моем рабочем сервере.
Мое приложение содержит пользовательскую задачу граблей (.rake файл в каталоге lib/задач).
Я хотел бы создать задачу ограничения, которая удаленно выполнит ту задачу граблей.
Немного более явным образом, в вашем \ config \ deploy.rb
добавьте за пределами любой задачи или пространства имен:
namespace :rake do
desc "Run a task on a remote server."
# run like: cap staging rake:invoke task=a_certain_task
task :invoke do
run("cd #{deploy_to}/current; /usr/bin/env rake #{ENV['task']} RAILS_ENV=#{rails_env}")
end
end
Затем из / rails_root /
можно запустить:
cap staging rake:invoke task=rebuild_table_abc
Это также работы:
run("cd #{release_path}/current && /usr/bin/rake <rake_task_name>", :env => {'RAILS_ENV' => rails_env})
Доп. информация: Capistrano Run