我一直在尝试实现 Each gem 来帮助安排我的 Sidekiq 任务。我检查了 crontab,它已正确更新,并且bundle exec也可以在终端中正常工作。
这是我的 schedule.rb:
# set RAILS_ROOT
RAILS_ROOT = File.dirname(__FILE__) + '/..'
set :output, 'log/whenever.log'
set :job_template, "bash -l -i -c ':job'"
job_type :runner, "cd :path && bundle exec rails runner -e staging ':task' :output"
every 1.day, :at => '10:30 pm', :roles => [:app] do
runner "Backup.perform_async"
end
crontab 如下图所示:
bash -l -i -c 'cd /path/to/app && bundle exec rails runner -e staging '\''Backup.perform_async'\'' >> log/whenever.log 2>&1'
但是,当调用 cron 作业时,会返回此错误:
/path/to/app/config/schedule.rb:8:in <top (required)>': undefined method
job_type' for main:Object (NoMethodError)
我还尝试通过终端手动运行 cron 作业,并注意到 rvm 也正确切换。我也试过设置
env "GEM_HOME", ENV["GEM_HOME"]
但错误只是改为/path/to/app/config/schedule.rb:2:in <top (required)>': undefined method
env' for main:Object (NoMethodError)
有任何想法吗?