【问题标题】:Ruby 1.9.3 @OSX Lion and CronRuby 1.9.3 @OSX Lion 和 Cron
【发布时间】:2012-07-14 08:35:27
【问题描述】:

我通过本指南安装了 Ruby 1.9.3p125(直到第 5 点):LINK

现在我遇到了这个问题:我的脚本在命令行中运行良好,但如果我从 Cron 执行它,它似乎使用默认环境并默认为 /usr/bin/ruby 而不是我的(~/.rvm/红宝石/ruby-1.9.3-p125/bin/ruby)。手动或通过 cron 执行命令产生相同结果的最佳方式是什么?

PS:它似乎跳过处理 ~/.bash_login 例如,其中 rvm 被加载到 PATH 中

【问题讨论】:

    标签: ruby macos command-line cron crontab


    【解决方案1】:

    在您的 crontab 行中,您可以在脚本运行之前获取 .bash_login。

    source ~/.bash_login && <your original command here>
    

    这样,您的脚本将在您运行时拥有您所拥有的一切。

    【讨论】:

    • 仍然没有,不会加载我的宝石 :(
    【解决方案2】:

    建议执行此操作的常用方法是将可执行文件的完整路径放在您的 crontab 中。例如

    crontab 应该显示:

    /Users/Poochie/.rvm/rubies/ruby-1.9.3-p125/bin/ruby /full/path/to/script.rb

    或任何完整路径。它比尝试加载 rvm 更强大,因为这里 rvm 脚本正在为您修改路径。如果要将其设置为 rvm 默认 ruby​​ 中的任何一个(例如,rvm 设置的任何内容都使用 x.x.x --default),您可以使用:/Users/Poochie/.rvm/bin/ruby 作为可执行文件,例如:

    /Users/Poochie/.rvm/bin/ruby /full/path/to/script.rb

    【讨论】:

    • 我这样做了,但它不会挑选我的宝石,它会在系统的红宝石 (1.8.7) 中搜索它们,而不是我的 (1.9.3)
    • 这可能需要rvm use 1.9.3 --default 设置默认的ruby。 /Users/Poochie/.rvm/bin/ruby -e "puts RUBY_VERSION; puts $:.inspect" 的输出是什么(后者 $: 是 ruby​​ 加载路径的简写)
    【解决方案3】:

    实际上我发现这篇文章对我帮助很大:LINK

    我设法按照我的意愿运行了我的脚本,但理论上问题仍然存在,因为问题仍然可能影响一般的 cron 使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多