运行 仅在一个生产实例上发条(rails capistrano)

Run clockwork only on one production instance (rails capistrano)

我有一个生产服务器,有两个实例 app1 和 app2,我使用 capistrano 部署我的应用程序,即:cap app1 deploy,cap app2 deploy。

我现在正在配置时钟来安排我延迟的工作。但是作业被安排了两次,因为应用程序部署后 app1 和 app2 上的发条进程 运行s。

如何强制 capistrano 运行 仅在 app2 上进行发条处理?

感谢提示。 米罗斯拉夫

解决方案

将以下设置添加到 deploy.rb:

set :clockwork_role, :clock

然后只配置其中一个实例使用角色:clock,即:

server 'URL', user: 'deploy', roles: %w{app db web clock}

在你的情况下,你可以在一种情况下将一些配置变量设置为 true,在第二种情况下设置为 false,并在设置时钟时检查它。

但要提一下,您使用不同的 'stages'(通常是 'staging'、'production'、'qa'、'features' 等)一个阶段的不同服务器。 Capistrano 有 'roles'(应用程序、数据库、后台作业等),每个都可以有多个服务器。

另请说明您使用的是哪个 capistrano 版本 - 从 2 到 3 有很大的变化