1

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

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

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

我尝试了任何时候的宝石;这产生了确切的错误。

所以我想我有两个问题:

  1. 如何让 cron 使用正确的 rake 版本?和
  2. 如何将它指向已经在供应商/捆绑包或供应商/缓存中的 gem?

请注意,该站点在部署在 Phusion Passenger 中时有效。

4

1 回答 1

3

在为同一问题寻找解决方案时,我发现这个线程有几个提示。

对我来说,快速简便的方法是将 cron 命令作为登录 shell 运行 - 如下所示:

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

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

于 2013-04-10T10:39:55.270 回答