【问题标题】:Command to run a RUBY cron job on JUSTHOST在 JUSTHOST 上运行 RUBY cron 作业的命令
【发布时间】:2016-05-09 04:09:23
【问题描述】:

我的 Cron 设置是:

0 * * * * ruby /directory/to/ruby/file.rb

我得到这个错误:

/usr/lib64/ruby/1.9.3/rubygems/custom_require.rb:36:in `require': cannot load such file -- mechanize (LoadError)
from /usr/lib64/ruby/1.9.3/rubygems/custom_require.rb:36:in `require'
from /home4/ofixcom1/rails_apps/products.rb:3:in `<main>'

当我在 SSH 上运行该脚本时,它运行没有问题,但是当我设置 cron 时,它给了我这个错误。我已经阅读了很多解决方案。即使使用 RVM,我几乎都尝试了它们。 以前使用 ruby​​ 的 cron 运行顺利,我不知道为什么它不适用于我的。

我忘了提及,在 JustHost 帮助中,他们有此链接以及其他代码的示例: Cron Setup

【问题讨论】:

  • cron 运行的用户是否与您通过 SSH 运行时使用的用户相同?
  • 是的,JUSTHOST 使用与 CPANEL 相同的用户进行 SSH 等等。
  • 由于 cron 没有在交互/登录会话中运行,我怀疑它没有加载,例如.bashrc.profile 配置 RVM 环境。您可以尝试运行bash -l -c "ruby ..."(如this answer)。如果做不到这一点,谷歌搜索“cron”、“RVM”和“bundler”的各种组合会产生大量结果。
  • 嗨,Jordan,感谢您的回复,.profile 文件位于目录 /home4/ofixcom1 中,我应该使用它而不是 bin/bash 吗?
  • Hello Jordan 在运行这段代码后,它无法识别require,看起来它认为这是一个SH而不是ruby>

标签: ruby cron


【解决方案1】:

rvm 有一个 page 专用于将 RVM 包装器与 cron 一起使用。基本上可以

  • 直接调用$rvm_path/wrappers/&lt;ruby-version&gt;[@gemset-name]中的包装器;
  • 使用rvm 的别名包装器
  • 在由cron 调用的shell 脚本中加载rvm 环境

【讨论】:

    【解决方案2】:

    在 cron 命令行上输入:

    bash -l -c '/home4/USER/public_html/code.rb'
    

    在您的 code.rb 文件顶部添加:

    #!/usr/local/bin/ruby
    

    打开并编辑.bashcr 以确保您已包含 gems 目录。

    export HPATH=$HOME
    export GEM_HOME=$HPATH/ruby/gems
    export GEM_PATH=$GEM_HOME:/lib64/ruby/gems/1.9.3
    export GEM_CACHE=$GEM_HOME/cache
    export PATH=$PATH:$HPATH/ruby/gems/bin
    export PATH=$PATH:$HPATH/ruby/gems
    

    特别感谢 Jordan,他给了我这个问题的答案。

    注意:在进行完整的 justhost 清除时。并插入 whereis ruby​​ 命令我必须更改

     #!/usr/local/bin/ruby 
    

    #!/usr/bin/ruby
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-22
      • 2013-07-24
      • 2016-12-10
      • 1970-01-01
      • 2014-01-07
      • 2015-11-15
      • 1970-01-01
      • 2012-03-27
      相关资源
      最近更新 更多