在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粘在它下面