Capistrano的;检查服务器是否为主服务器

时间:2014-07-29 05:33:15

标签: capistrano3 drush

因此,我在部署后的主服务器上运行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))或类似内容中包含块。

非常感谢这里的任何帮助。

感谢。

1 个答案:

答案 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