在我的Ruby脚本,我需要的Gmail的宝石:为什么bash -l -c“CMD”让红宝石找到我的宝石?
require 'rubygems'
require 'gmail'
在shell中运行时,它的工作原理确定:
ruby my-script.rb
而当我把它放在一个cron作业,它未能执行:
* * * * * cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb
日志显示,Gmail的宝石不能加载:
/usr/local/rvm/rubies/ree-1.8.7-2011.03/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- gmail (LoadError)
很好,当我做到这一点(把在bash的CMD -l -c 'CMD'):
* * * * * /bin/bash -l -c 'cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb'
它再次正常工作。
为什么?
ps.我知道参数-l
使bash成为登录shell,但这有什么区别吗?
谢谢,很清楚 – DiveInto