我正在尝试创建一个 cron 作业,该作业使用每当 gem 运行控制器方法,但我遇到了麻烦。我越来越
捆绑程序:不可执行:bin/rails
在我的 cron.log 文件中。
时间表.rb
every 1.minutes do
runner "Reset.reset"
end
重置.rb
class Reset < ActiveRecord::Base
def self.reset
logger.debug("This is the cron job")
end
end
我还运行了 every --update-crontab 来更新 cron 作业。
为什么日志中没有显示记录器消息?
感谢大家的帮助。
crontab -l 的输出
sm 启动 RVM
sm端rvm
开始每当生成任务时: /home/john/rails_app/config/schedule.rb PATH=/home/john/bin:/home/john/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/ usr/games:/usr/local/games:/snap/bin:/home/john/.rvm/bin
GEM_PATH=""
***** /bin/bash -l -c 'cd /home/john/rails_app && 捆绑执行 bin/rails runner -edevelopment '\''Reset.reset_ payments'\'' >>/home/john/ rails_app/log/cron.log 2>>/home/john/rails_app/log/error.log'
结束每当生成任务时: /home/john/rails_app/config/schedule.rb
我最终使用了 rake 任务而不是使用 runner。
文档指出,对于跑步者,命令如下:
cd :path && bin/rails runner -e :environment ':task' :output
。但在你的 crontab 中它看起来像:...bundle exec bin/rails runner -e development...
运行
crontab -e
并手动删除bundle exec,或者在job_type :runner
文件中指定schedule.rb
,如文档中所示。对我来说,这解决了问题。
job_type :runner, "cd :path && bin/rails runner -e :environment ':task' :output"
every 1.minutes do
runner "Reset.reset"
end