因此,我在部署后的主服务器上运行Drush(Drupal)的一些命令(缓存清除,数据库更新等)。
我的deploy.rb中有一个像这样的块;
after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
symlink_configuration.each do |config|
shared = File.join(shared_path, config[0])
release = File.join(release_path, config[1])
execute "ln -nfs #{shared} #{release}"
end
# Drush tasks.
execute "drush -r #{File.join(release_path, 'app')} vset --exact --yes maintenance_mode 1; true"
execute "drush -r #{File.join(release_path, 'app')} cc all; true"
execute "drush -r #{File.join(release_path, 'app')} -y updb; true"
execute "drush -r #{File.join(release_path, 'app')} vset --exact --yes maintenance_mode 0; true"
end
end
问题是我只想在主服务器上执行这些任务。我在production.rb中标记了primary: true
,但我无法看到如何在if(is(primary))
或类似内容中包含块。
非常感谢这里的任何帮助。
感谢。
答案 0 :(得分:0)
试
on primary roles(:web), in: :groups, limit: 3, wait: 10 do
您可以在capistrano数据库迁移任务中看到主要的示例 https://github.com/capistrano/rails/blob/master/lib/capistrano/tasks/migrations.rake