如何使crontab使用正确的rake并引用vendor / bundle中的gem

时间:2012-12-22 04:49:19

标签: ruby-on-rails cron rake bundler

我希望我的cron作业(调用rake任务)使用安装在[rails_app] / vendor / bundle或[rails_app] / vendor / cache中的gem。目前,我的系统宝石已经过时,但由于我无法控制的各种原因,我无法更新它们。

我尝试使用bundle exec,但这似乎不起作用。我得到的错误是      usr / local / lib / ruby​​ / gems / 1.9.1 / gems / bundler-1.0.18 / lib / bundler / spec_set.rb:88:in'实现':找不到rake- 0.9.2.2在任何来源(Bundler :: GemNotFound)

我相信这是因为我的系统耙子已经过时了。我尝试在cron作业中使用bundle exec rake _0.9.2.2_ [my_task],但出现了同样的错误

我尝试了whenever宝石;这产生了确切的错误。

所以我猜我有两个问题:

  1. 如何让cron使用正确的rake版本?和
  2. 如何将其指向已包含在vendor / bundle或vendor / cache中的gem?
  3. 请注意,该站点在Phusion Passenger中部署时可以正常工作。

1 个答案:

答案 0 :(得分:2)

在寻找同一问题的解决方案时,我发现this Thread有几个提示。

快速&对我来说简单的方法就是将cron命令作为登录shell运行 - 就像这样:

* * * * * /bin/bash -l -c 'bundle exec rake _0.9.2.2_ [my_task]' 2>&1

结尾2>&1只是为了确保在cron日志中收到错误。另请参阅man bash了解更多信息!