ruby-on-rails Google云平台:如何在生产环境中自动运行Ruby on Rails delayed_jobs(不使用命令行)

dldeef67  于 2023-10-21  发布在  Ruby
关注(0)|答案(1)|浏览(127)

我们已经能够使用rake成功地在开发模式下运行延迟的作业:jobs work
我们已经将Rails应用程序部署到Google云平台,但我们不确定如何在生产环境中自动运行delayed_jobs(不使用命令行)
如果我们运行localhost生产服务器并手动运行ruby bin/delayed_job run(适用于Windows),它可以工作。
任何帮助是赞赏:)

eanckbw9

eanckbw91#

参考此链接,在服务器启动时自动运行延迟作业,而无需在控制台上手动运行rake作业:work
Start or ensure that Delayed Job runs when an application/server restarts
注意:deamons gem不适用于windows,但同样可以在Linux或mac上运行

将代码复制到initializers/delayed_job_config.rb

DELAYED_JOB_PID_PATH = "#{Rails.root}/tmp/pids/delayed_job.pid"

def start_delayed_job
  Thread.new do
    `ruby bin/delayed_job start`
  end
end

def daemon_is_running?
  pid = File.read(DELAYED_JOB_PID_PATH).strip
  Process.kill(0, pid.to_i)
  true
rescue Errno::ENOENT, Errno::ESRCH   # file or process not found
  false
end

start_delayed_job unless daemon_is_running?

相关问题