在我的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