Cron +每当不使用RVM时

时间:2014-06-07 01:09:03

标签: ruby-on-rails ruby cron rvm whenever

我正在使用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'\''' 

有人可以帮我解决这个问题。谢谢!

2 个答案:

答案 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也是您环境中的其他内容。