我正在使用RVM环境。 RUby版本:2.1.2 rails:4.1.1
schedule.rb :
every 1.minute do
runner "note.send_mail"
end
我使用whenever --update-crontab
更新了cron标签。
当我使用crontab -l
检查作业时,它显示如下,没有设置适当的时间。
并且cron工作不起作用。
* * * * * /bin/bash -l -c 'cd /Desktop/folder1/blog2 && bin/rails runner -e production '\''note.send_mail'\'''
有人可以帮我解决这个问题。谢谢!
答案 0 :(得分:2)
转到~/.rvmrc
文件并添加以下内容:
rvm_trust_rvmrcs_flag=1
再次whenever --update-crontab
。根据{{3}}:
如果您的生产环境使用RVM(Ruby版本管理器),您将遇到导致您的cron作业挂起的问题。这与Whenever没有直接关系,调试起来也很棘手。您的.rvmrc文件必须是可信的,否则cron作业将挂起,等待文件被信任。解决方案是通过将此行添加到〜/ .rvmrc中的用户rvm文件来禁用提示
rvm_trust_rvmrcs_flag = 1
这告诉rvm信任所有rvmrc文件。
如果这对您不起作用,请尝试使用此页面中提到的其他解决方案:README of whenever。
答案 1 :(得分:0)
您可以定义一个在命令行上加载rvm的自定义运行器,例如
job_type :runner_with_rvm, 'source /etc/profile.d/rvm.sh; cd :path;rvm 2.0@gemset do bundle exec script/rails runner -e :environment ':task' :output'
every 1.minute do
runner_with_rvm "Note.send_email"
end
将2.0@gemset
替换为您想要的ruby版本和gemset。
可能是/etc/profile.d/rvm.sh
也是您环境中的其他内容。