每当路径在crontab文件为rails 3 ubuntu



我使用每当gem与rails 3。在我的生产服务器(ubuntu)上,运行器任务没有运行。我尝试设置:set job_template以获得-l -i,如此github票据中提到的。然而,这并不能解决问题。

这个特殊的生产ubuntu的问题是ruby路径不在echo $PATH:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

而ruby的路径是/var/rails/myapp/share/bundle/ruby/1.8/bin

因此,如果我手动编辑crontab文件并将PATH=/var/rails/myapp/shared/bundle/ruby/1.8/bin: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games添加到crontab文件中,则运行器任务将正确执行。

然而,每次进行部署时,我都需要手动编辑crontab文件以向其中添加PATH语句。

是否有任何方法在任何时候在crontab文件中添加这个PATH行,以便在每次部署后都不需要手动执行此操作?

谢谢

我没有使用RVM并在文件配置/调度中添加以下代码。Rb(你写宝石相关代码的地方)为我工作。

env :PATH, ENV['PATH']

我认为如果您将/var/rails/myapp/share/bundle/ruby/1.8/bin添加到服务器上运行的任何用户的PATH,它应该被捡起。或者,您可以将它添加到每当schedule.rb:

env :PATH, "$PATH:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

应该可以,但是我还没有测试过。

idlefingers的答案看起来基本正确,但根据ami的评论,我将把这一行更改为以下内容:

env :PATH, "#{ENV["PATH"]}:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

注意PATH的环境键的字符串插值。我还没有测试过,但是根据ami的注释,这应该像预期的那样完全扩展crontab文件中的路径字符串。

将PATH语句添加到crontab文件的顶部,在

开始的行之前
# BEGIN Whenever generated tasks for:

,你不应该每次都手工编辑crontab文件

最新更新