使用Capistrano和Rails 4配置延迟作业

8

我正在尝试使用Capistrano启动/停止Rails 4应用程序中的Delayed Jobs。我遵循了这里的说明,但它只适用于Rails 3。目前的配置如下:

deploy.rb:

require 'delayed/recipes'
after "deploy:start", "delayed_job:start" 
after "deploy:stop", "delayed_job:stop" 
after "deploy:restart", "delayed_job:stop","delayed_job:start"

当我尝试部署时,在尝试执行RAILS_ENV=production script/delayed_job stop后,出现以下错误:

sh: script/delayed_job: not found

1
看起来延迟/recipes可能已经过时了?在Rails 4中,我们必须用bin/delayed_job替换script/delayed_job。 - Tom Rossi
3个回答

18

我找到了解决方法(set :delayed_job_command, "bin/delayed_job"),希望这能帮到其他人!

deploy.rb:

require 'delayed/recipes'
set :delayed_job_command, "bin/delayed_job"
after "deploy:start", "delayed_job:start"
after "deploy:stop", "delayed_job:stop"
after "deploy:restart", "delayed_job:stop","delayed_job:start"

3
被接受的答案对我也没用。我按照以下步骤进行操作:
deploy.rb
def rails_env
  fetch(:rails_env, false) ? "RAILS_ENV=#{fetch(:rails_env)}" : ''
end

execute "cd #{current_path};#{rails_env} bin/delayed_job restart"

1

对我来说,这个方法无效。 我的生产环境包括ubuntu 12.04, rails 4, rbenv ruby 2,使用capistrano 3进行部署。 在尝试了多种解决方案后,我在restart任务中加入了以下代码:

execute :ruby, "/var/www/app/current/bin/delayed_job restart"

如此简单,但我花了两天时间才想出来。 在我的设置中,我不得不手动放置bin/delayed_job。

希望其他人也能从中受益。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接