Crontab + rails3 + bundler

时间:2010-03-15 09:18:37

标签: ruby-on-rails crontab bundler

我正在运行一个执行rake任务的crontab。我收到以下错误(使用来自crontab的MAILTO):

rake aborted!
no such file to load -- bundler
/Users/Mendel/Sites/misnooit/Rakefile:4
(See full trace by running task with --trace)

我正在使用rvm:
红宝石:红宝石1.9.1p378
rails:Rails 3.0.0.beta
$ GEM_HOME:/Users/Mendel/.rvm/gems/ruby-1.9.1-p378
bundler:bundler(0.9.11)

错误是非常自我解释但我无法修复它。是否有人对此事有更多了解?提前谢谢。

5 个答案:

答案 0 :(得分:6)

我刚刚经历过这个。对我来说问题是我使用的rake和ruby实例是在本地构建的,并安装到/ usr / local / bin。 / usr / bin中还有其他版本(必须在过去检查我使用apt-get安装的内容..)。

因此,在我的crontab文件中,我使用

设置路径

PATH =的/ usr / local / bin中:在/ usr / bin中:/ bin中

(我在失败的crontab电子邮件中看到它为PATH = / usr / bin:/ bin)

它有效。

答案 1 :(得分:1)

猜猜:你的默认Ruby是Ruby 1.9.1p378吗?

我认为不是这样你就可以执行rvm --defaults "ruby-1.9.1-p378" 如果这没有帮助,你确定在使用ruby 1.9时安装了bundler吗?

此外,在您的测试/生产环境中,您可能希望与其他用户一起运行cron。因此,我建议您将rvm安装为“root”,并设置(仍为root用户)默认RVM,它将成为所有系统用户的默认RVM。 当然,您可以按用户覆盖此内容。

答案 2 :(得分:1)

我使用http://github.com/javan/whenever

时有很好的经验

它使用Ruby DSL来管理cron任务,它处理所有环境魔法的设置。

every 3.hours do
  runner "MyModel.some_process"
  rake "my:rake:task"
end

答案 3 :(得分:1)

使用--trace断言运行命令以确保rake命令中没有明显的东西,但你可以做的是链接crontab命令

rvm 1.9.1;rake do_whatever_task

这样它每次都会在运行rake之前加载ruby环境。

答案 4 :(得分:0)

本周末我遇到了类似的问题,我发现我的Rake Gem更新为0.90,你需要耙0.8.7。这解决了我的问题。