在Ruby脚本中需要Ruby Gem打破了Cron作业执行

我正在尝试使用Gems运行一个cron作业。 我已经通过RVM安装了ruby,当我需要一个gem时它打破了cron的工作。 我试过要求两个完全不同的gem,PG / Pry,当我需要时,cronjob没有完成。 这是“测试代码”工作正常:

open('/home/log.log', 'a') do |f| f.puts Time.now.to_s end 

以下是我设置cronjob的方法:

 * * * * * /usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby /home/test1.rb 

我每分钟都能看到新的输出。 当我在顶部添加一个require gem行时,它会中断,但只有在通过cron运行时:

 require 'pg' open('/home/log.log', 'a') do |f| f.puts Time.now.to_s end 

cronjob运行(我可以看到它在sys日志中执行),但从未完成(没有输出进入文本文件)。 我在两个单独的服务器上尝试了这个,一个是Debian,一个是CentOS,两者都有相同的问题。 奇怪的是,这只会影响cron作业,如果我从控制台运行相同的ruby文件:/home/test1.rb它会正常工作。

任何帮助都会很棒。

您需要使用rvm设置crontab,例如:

rvm cron设置

使用该rvm在crontab文件中设置环境变量

然后你有一个crontab文件在顶部:

 PATH="/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/" rvm_env_string='ruby-1.9.3-p194' rvm_path='/usr/local/rvm' rvm_ruby_string='ruby-1.9.3-p194' RUBY_VERSION='ruby-1.9.3-p194' GEM_HOME='/usr/local/rvm/gems/ruby-1.9.3-p194' GEM_PATH='/usr/local/rvm/gems/ruby-1.9.3-p194:/usr/local/rvm/gems/ruby-1.9.3-p194@global' MY_RUBY_HOME='/usr/local/rvm/rubies/ruby-1.9.3-p194' IRBRC='/usr/local/rvm/rubies/ruby-1.9.3-p194/.irbrc' 

然后你可以把你的crontask粘在它下面