我正在尝试在RVM环境中运行10.5的旧PPC机器上运行一个简单的ruby脚本。
搜索SO,我遵循了这篇文章中选择的答案。
这是 cron 中的行,因此:
SHELL=/bin/bash
00 * * * * BASH_ENV=~/.bash_profile && /bin/bash -c '~/deggy/onlineGW.rb'
此命令在用户 sam 根目录的 Bash 中运行良好。
这是我脚本的突出部分:
#!/usr/bin/env ruby
require 'open-uri'
require 'nokogiri'
...
这是来自 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)
好的,由于我正在运行 RVM,我将默认 ruby 设置为 1.9.3,正如我上面提到的,该命令在终端中执行,但不在 cron 中执行。有没有其他环境在起作用?
很明显,我忽略了一些东西。帮我看看它,sam
或者你可以简单地尝试
rvm cron setup # let RVM do your cron settings
这对我有用。 通过 https://coderwall.com/p/vhv8aw
我配置了几种不同的操作系统来使用几种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
上面的例子是在Gentoo GNU/Linux下使用fcron工作,这是一个更灵活,更美观和强大的标准cron解决方案,但可以与任何cron一起使用。
[1] 此命令将使用默认系统编辑器打开crontab
。
要为cron
作业加载默认的 RVM ruby 环境,这是我为用户模式 RVM 设置的内容,假设用户是 ohho
,主文件夹是/home/ohho
。要进行编辑,请在命令行中输入crontab -e
:
MAILTO=""
SHELL=/bin/bash
BASH_ENV=/home/ohho/.bash_profile
HOME=/home/ohho
* * * * * rails -v > /home/ohho/env.txt
最后一行用于测试rails
(如果已安装)可以正确调用。您还应该检查~/.bash_profile
是否加载 RVM 环境(这是 bash 的默认值)。
SHELL
和BASH_ENV
的详细解释可以在丹尼尔的回答中找到。