0

这怎么可能?

我目前正在使用延迟作业附带的 Capistrano配方

这就是我所拥有的:

# Delayed Job recipes
require "delayed/recipes"

set :rails_env, "production" # added for delayed job

after "deploy:stop",    "delayed_job:stop"
after "deploy:start",   "delayed_job:start"
after "deploy:restart", "delayed_job:restart"

我不太了解 Capistrano 阶段,也许解决方案是将正确的任务设置为正确的阶段。

 更新

每次我部署我都会得到

executing `delayed_job:restart'

这真的需要吗?有没有办法在需要时重新启动delayed_job?还是总是需要它?

4

1 回答 1

1

我也不确定你在找什么,但也许是一个简单的

cap delayed_job:stop

从命令行会做什么?您可以在以下位置查看所有可用任务

cap -T

更新

我认为每次部署时重新启动延迟作业工作人员是最佳实践。最后,工作人员执行您的代码,这往往会在部署之间发生变化。现在,如果您的工作人员运行的代码很少更改(包括 rails 启动过程、环境文件、初始化程序、设置、您使用的模型等),并且您想自己处理这些,那么只需删除钩子,例如

after "deploy:stop",    "delayed_job:stop"

从 deploy.rb 中,你很好:dj 任务仍将由你支配,但在部署期间它们不会被触发。

于 2013-06-22T12:03:53.570 回答