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
deploy.rb
set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
capfile
require "whenever/capistrano"
问题是什么?如何调试?
答案 0 :(得分:0)
我在部署应用时遇到了类似的问题。
如果你检查crontab的日志文件,你会看到它确实执行但是它在错误的上下文中执行。
例如:
您认为此代码应该执行但不会:
every 1.minute do
runner "bundle exec rake db:seed"
end
相反,您应该提供可执行文件的绝对路径。 Cron不知道它应该在什么样的上下文中运行,它只是执行。
我们在部署中使用rbenv,并使用宝石垫片。所以我只为cron提供了可执行文件的绝对路径。
此代码运行:
every 1.minute do
runner "/usr/bin/shims/bundle exec rake db:seed"
end