我试图每3小时运行一次数据库备份。 问题是,在cron日志中,我没有运行而是得到以下消息:
找不到命令“ bin / rails”。
我的schedule.rb文件很简单:
set :bundle_command, "/usr/local/bin/bundle"
set :output, { error: '/usr/src/app/log/error.log', standard: '/usr/src/app/log/cron.log' }
require '/usr/src/app/lib/database_backup.rb'
every 2.minutes do
runner "take_database_backup"
end
Rails在Docker容器中运行。
有什么想法会导致这种情况吗?
答案 0 :(得分:0)
您的schedule.rb
指定了:bundle_command
,因此看来您打算让cronjob使用/usr/local/bin/bundle exec ...
运行某些东西。
但是,:bundle_command
仅适用于job_type :rake
或job_type :script
。 job_type :runner
解析为:
"cd :path && bin/rails runner -e :environment ':task' :output"
请注意,以上使用bin/rails
,而不是bundle
。因此,bin/rails
决定解决的任何地方都将丢失您的:path
垃圾桶。默认情况下,:path
解析到执行whenever
的目录。