自定义 Rails 任务
这些任务中的许多可能需要 Capistrano::Rails。
从环境变量运行任意 rake 任务
namespace :deploy do
desc 'Runs any rake task, cap deploy:rake task=db:rollback'
task rake: [:set_rails_env] do
on release_roles([:db]) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, ENV['task']
end
end
end
end
end
通过环境变量传递要运行的 rake 任务。这是一个在服务器上运行 rake 任务的简单示例。
bundle exec cap production deploy:rake task=db:seed
条件迁移
部署中常见的问题是缓慢的迁移,这会导致停机。在这种情况下,您通常希望有条件地运行迁移,即主要部署不运行它们,但您可以在更合适的时间手动运行它们。为此,您可以在您的 Capfile
中添加以下内容
require 'capistrano/rails/migrations' if ENV['RUN_MIGRATIONS']
现在迁移默认情况下不会运行,但可以使用以下命令运行它们
RUN_MIGRATIONS=1 bundle exec cap production deploy:migrate