我正在运行一个执行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)
错误是非常自我解释但我无法修复它。是否有人对此事有更多了解?提前谢谢。
答案 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。这解决了我的问题。