在RVM环境中的Ruby cron作业中找不到宝石

sam*_*452 6 ruby macos cron powerpc rvm

我正在尝试在RVM环境中运行10.5的旧PPC机器上运行一个简单的ruby脚本.

搜索SO,我按照这篇文章中选择的答案.

这是cron中的行:

SHELL=/bin/bash
00 * * * * BASH_ENV=~/.bash_profile && /bin/bash -c '~/deggy/onlineGW.rb'
Run Code Online (Sandbox Code Playgroud)

这个命令在用户山姆根的Bash中运行良好.

这是我的脚本的重要部分:

 #!/usr/bin/env ruby
 require 'open-uri'
 require 'nokogiri'
 ...
Run Code Online (Sandbox Code Playgroud)

这是来自cron的错误输出:

 X-Cron-Env: <SHELL=/bin/bash>
 X-Cron-Env: <PATH=/usr/bin:/bin>
 X-Cron-Env: <LOGNAME=sam>
 X-Cron-Env: <USER=sam>
 X-Cron-Env: <HOME=/Users/sam>
 Date: Mon,  6 Jan 2014 03:15:00 -0600 (CST)
 /Users/sam/deggy/onlineGW.rb:3:in `require': no such file to load -- nokogiri (LoadError)
Run Code Online (Sandbox Code Playgroud)

好的,因为我正在运行RVM,我已将默认ruby设置为1.9.3,如上所述,该命令在终端中执行,但不在cron中执行.还有其他环境吗?

很明显,我忽略了一些东西.山姆,请帮我看看

Mic*_*ael 31

或者你可以试试

rvm cron setup # let RVM do your cron settings

这对我有用.通过https://coderwall.com/p/vhv8aw

  • 警告:这会覆盖现有的crontab条目 (2认同)

atm*_*osx 7

我配置了几个不同的操作系统来处理几个CRON风格和RVM.

我首先尝试了RVM的官方解决方案,但在FreeBSD和Gentoo下无法正常工作.我必须手动添加所有相关路径,如下所示,但首先输入crontab -e以启动crontab编辑器[1]:

# atmat's crontab configuration
SHELL=/bin/bash
PATH=/home/atma/.rvm/gems/ruby-1.9.3-p0/bin:/home/atma/.rvm/gems/ruby-1.9.3-p0@global/bin:/home/atma/.rvm/rubies/ruby-1.9.3-p0/bin:/home/atma/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.5.3
RUBYLIB=/home/atma/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1
GEM_HOME='/home/atma/.rvm/gems/ruby-1.9.3-p0'
GEM_PATH='/home/atma/.rvm/gems/ruby-1.9.3-p0:/home/atma/.rvm/gems/ruby-1.9.3-p0@global'
RUBYOPT=rubygems

%nightly,mail(no) * 8-9 /home/atma/.rvm/rubies/ruby-1.9.3-p0/bin/ruby  /usr/local/bin/morula -s username update
Run Code Online (Sandbox Code Playgroud)

上面的例子是在Gentoo GNU/Linux下使用fcron为标准cron提供更灵活,美观和强大的解决方案,但是可以与任何cron一起使用.

[1]此命令将crontab使用您的默认系统编辑器打开.