【问题标题】:Ruby on Rails, Capistrano, Whenever: Cron jobs not getting executed at production serverRuby on Rails、Capistrano、无论何时:Cron 作业未在生产服务器上执行
【发布时间】:2014-11-03 11:58:43
【问题描述】:

Ruby on rails + Capistrano + Whenever gem

我执行了whenever --update-crontab,但仍然没有在生产服务器上执行 cron 作业。日志文件中没有日志。尽管在不需要 capistrano 的开发环境中一切正常。

schedule.rb

set :output, "../dev/log/cron.log"

every 1.minute do
  runner "SOME_TASK"
end

部署.rb

set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }

头文件

 require "whenever/capistrano"

有什么问题?如何调试?

【问题讨论】:

    标签: ruby-on-rails cron capistrano whenever whenever-capistrano


    【解决方案1】:

    我在部署我们的应用程序时遇到了类似的问题。

    如果您检查 crontab 的日志文件,您会发现它确实执行了,但它在错误的上下文中执行。

    例如:

    你认为这段代码应该执行,但它没有:

    every 1.minute do runner "bundle exec rake db:seed" end

    相反,您应该提供可执行文件的绝对路径。 Cron 不知道它应该在什么样的上下文中运行,它只是执行。

    我们在部署中使用 rbenv 并使用 gems 垫片。所以我只是为 cron 提供了可执行文件的绝对路径。

    此代码确实运行: every 1.minute do runner "/usr/bin/shims/bundle exec rake db:seed" end

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-31
      • 2011-11-13
      • 2013-06-14
      • 2016-05-17
      • 2014-12-04
      • 2012-01-27
      • 2021-11-07
      • 2014-01-12
      相关资源
      最近更新 更多