cron和bundle exec问题

时间:2011-08-17 16:15:28

标签: ruby-on-rails-3 cron bundler

我已经升级到rails 3.0.9,它引入了rake问题。除了cron作业的问题外,我已经解决了这个问题。

这曾经有用:

#!/bin/sh
source /usr/local/rvm/scripts/rvm 
cd /home/p1r65759/apps/abbc/
/usr/local/bin/rake refresh_events RAILS_ENV=production

但是现在我收到了这个错误: 你已经激活了rake 0.8.7,但你的Gemfile需要rake 0.9.2。考虑使用bundle exec。 / home / p1r65759 / apps / abbc / Rakefile:4:in'' (通过使用--trace运行任务查看完整跟踪)

如何修改我的脚本以使用bundle exec,以便它使用正确版本的rake并成功运行? 感谢。

2 个答案:

答案 0 :(得分:9)

如果您正在为您的应用程序使用bundler,那么您不需要使用“/ usr / local / bin / rake”作为rake的路径。

您可以使用

bundle exec rake

所以你的新剧本将是

#!/bin/sh
source /usr/local/rvm/scripts/rvm 
cd /home/p1r65759/apps/abbc/
bundle exec rake refresh_events RAILS_ENV=production

bundle exec将起作用,因为你已经在项目目录中了。

不要忘记在你的Gemfile中加入rake。

答案 1 :(得分:4)

而不是

/usr/local/bin/rake refresh_events RAILS_ENV=production

你应该使用

bundle exec rake refresh_events RAILS_ENV=production

或者更好的是用--binstubs:

安装你的软件包
bundle install --binstubs --without development test

那么你将有bin / rake:

./bin/rake refresh_events RAILS_ENV=production