日期:2014-05-16  浏览次数:20702 次

Linux cron中使用rvm

使用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

?