मेरी रूबी लिपि में, मुझे जीमेल रत्न की आवश्यकता थी:
require "rubygems"
require "gmail"
शेल में चलने पर, यह ठीक काम करता है:
ruby my-script.rb
जब मैंने इसे क्रॉन जॉब में रखा, तो यह निष्पादित करने में विफल रहा:
* * * * * cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb
लॉग दिखाता है कि जीमेल रत्न लोड नहीं किया जा सकता है:
/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)
ठीक है, जब मैं ऐसा करता हूं (cmd को bash -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
बैश को एक लॉगिन शेल बनाएं, लेकिन क्या इससे कोई फर्क पड़ता है?
उत्तर:
उत्तर № 1 के लिए 6The -l
पैरामीटर एक लॉगिन शेल में आदेश निष्पादित करता है, जिसका अर्थ है कि यह आपकी शेल प्रोफ़ाइल से आपके पथ और अंय सेटिंग्स इनहेरिट करती है ।क्रॉनिक नौकरी, अगर लॉगिन शेल के बिना चलाने के लिए, किसी भी पथ पर्यावरण चर सेट (जैसे उन rvm द्वारा सेट के रूप में), जो सिस्टम में परिणाम संदर्भित रत्न खोजने में असमर्थ होने के बिना चला जाएगा ।
जवाब के लिए 3 № 2
rvm की आवश्यकता है आप एक शेल लॉगिन का उपयोग करें, देखें सामान्य प्रश्न.
जवाब के लिए 2 № 3
मुझे लगता है आप अपने लॉगिन लिपि में rvm लोड कर रहे हैं, ईआरजीओ rvm केवल एक लॉगिन शेल में उपलब्ध हो जाएगा ।