0

Ruby on rails + Capistrano + Whenever gem

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

日程安排.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"

有什么问题?如何调试?

4

1 回答 1

0

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

如果您检查 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

于 2014-12-04T14:41:43.610 回答