【问题标题】:whenever PATH in crontab file for rails 3 ubuntu每当 Rails 3 ubuntu 的 crontab 文件中的 PATH
【发布时间】:2011-08-07 13:39:11
【问题描述】:

我正在使用带有 rails 3 的 whenever gem。在我的生产服务器 (ubuntu) 上,运行器任务没有运行。我尝试将:set job_template 设置为-l -i,如this github ticket 中所述。然而,这并不能解决问题。

这个特定的生产 ubuntu 的问题是 echo $PATH 中没有 ruby​​ 路径:

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

而 ruby​​ 路径是 /var/rails/myapp/shared/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 行,这样每次部署后就不需要手动执行此操作了吗?

谢谢

【问题讨论】:

    标签: ruby-on-rails cron ubuntu-10.04 whenever


    【解决方案1】:

    我没有使用 RVM,而是在 config/schedule.rb 文件中添加以下代码(每当 gem 相关代码时你写的地方)对我有用。

    env :PATH, ENV['PATH']
    

    【讨论】:

      【解决方案2】:

      我认为,如果您将 /var/rails/myapp/shared/bundle/ruby/1.8/bin 添加到服务器上运行的任何用户 cron 的 PATH 中,它应该被拾取。或者,您可以将其添加到任何时候 schedule.rb:

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

      应该可以解决问题,但我还没有测试过。

      【讨论】:

      • 谢谢!将 /var/rails/myapp/shared/bundle/ruby/1.8/bin 添加到 cron 用户的 PATH 或为 cron 用户编辑 /etc/environment 或 bashrc 不起作用。它仅在 crontab 文件中存在 PATH 语句时才有效。您提到的 env :PATH 选项将 PATH 行正确添加到 crontab 文件中。只有一个问题是添加 $PATH 的语法。当前方法不扩展 $PATH 值。因此,在 crontab 文件中输入的行是 PATH=$PATH:/var/rails/myapp/shared/bundle/ruby/1.8/bin。
      【解决方案3】:

      idlefingers 的答案看起来大部分是正确的,但根据 ami 的评论,我会将该行更改为以下内容:

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

      注意 PATH 环境键的字符串插值。我没有对此进行测试,但根据 ami 的评论,这应该会按预期完全扩展 crontab 文件中的路径字符串。

      【讨论】:

        【解决方案4】:

        将 PATH 语句添加到 crontab 文件的顶部,在开始的行之前

        # BEGIN Whenever generated tasks for:
        

        您不必每次都手动编辑 crontab 文件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-18
          • 1970-01-01
          • 2021-09-29
          • 2012-04-24
          • 2016-02-22
          • 1970-01-01
          • 2016-04-30
          • 2015-05-01
          相关资源
          最近更新 更多