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

时间:2013-09-12 15:13:24

标签: ruby-on-rails capistrano ruby-on-rails-4 delayed-job

我正在尝试让Capistrano使用Rails 4应用程序启动/停止延迟作业。我跟着instructions here,但它说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 =生产脚本/ delayed_job停止

后出现以下错误
sh: script/delayed_job: not found

3 个答案:

答案 0 :(得分:18)

找到解决方法(设置: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"

答案 1 :(得分: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"

答案 2 :(得分:1)

对我来说这没用。 我的生产环境包括ubuntu 12.04,rails 4,rbenv ruby​​ 2和部署capistrano 3。 在使用每个适用的解决方案搞乱后,我在重启任务中的deploy.rb中提出了这一行。

执行:ruby,“/ var / www / app / current / bin / delayed_job restart”

这么简单,但我花了2天的时间想出来。 在我的设置中,我不得不手动将bin / delayed_job放到位。

希望其他人觉得这很有帮助。