日期:2014-05-16 浏览次数:20684 次
使用rvm后,在cron中直接使用rake或rails runner都会报错。因为cron的shell只会加载最基本的shell环境,而rvm需要执行一个初始化脚本,所以不加处理的话会报错。
?
解决的方法并不复杂,就是cron要采用 /bin/bash -l -c '<这里是ruby或rails runner命令>' 写法。
?
例如
? 12 0 * * * /bin/bash -l -c 'rake -f /some_path/Rakefile sometask'
或者
? 10 0 * * * /bin/bash -l -c '/some_rails_app/script/rails/runner -e production "SomeModel.some_func"'
?
bash -l? 是指 load the entire environment
-c 是指 command
?
参考:
http://blog.scoutapp.com/articles/2010/09/07/rvm-and-cron-in-production
?