का उपयोग करके "अनियमित स्थिर एन्कोडिंग" मैं बुद्धिमानी के अंत में हूं और इस एफ * # $^एन्कोडिंग मुद्दे पर कुछ मदद के लिए आप सभी को बदल रहा हूं।आरवीएम, रूबी 1.9.2, बंडलर और यात्री
मैं ड्रीमहोस्ट पर रूट अनुमतियों के साथ एक निजी सर्वर पर चल रहा हूं। यहां मेरे पर्यावरण और संस्करणों के बारे में कुछ है।
$ `which ruby` -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ `which bundle` -v
Bundler version 1.0.15
$ `which rails` -v
Rails 3.0.9
इस त्रुटि के अलावा, मेरे रेल ऐप बिना किसी समस्या के ठीक चलते हैं। हालांकि, जब मैं इसे encode
विधि का उपयोग कर एन्कोडिंग एक स्ट्रिंग को बदलने की कोशिश:
NoMethodError: undefined method `encode' for "foobar":String
encode
should be परिभाषित लेकिन यह नहीं है!
$ irb
ruby-1.9.2-p180 :001 > Encoding
=> Encoding
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8')
=> "foobar"
लेकिन अगर मैं रेल बंडल कार्यकारी के माध्यम से कंसोल का उपयोग कर प्रयास करें, Encoding
नहीं पाया जाता है:
$ bundle exec rails c staging
Loading staging environment (Rails 3.0.9)
ruby-1.9.2-p180 :001 > Encoding
NameError: uninitialized constant Encoding
from /[REDACTED]/shared/bundle/ruby/1.8/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing'
from (irb):1
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8')
NoMethodError: undefined method `encode' for "foobar":String
जाहिर है सही ढंग से सेटअप, लेकिन मैं कुछ लोड हो रहा है नहीं है Encoding
अगर मैं irb
में कोशिश पाया जाता है मुझे यकीन नहीं है कि इसे कहां देखना है। मुझे यहां क्या समझ नहीं आ रहा है?
अद्यतन 6/19/2011
के रूप में रयान बिग ने कहा, यह उत्सुक है कि रत्नों के लिए निर्देशिका पथ 1.8
है। हालांकि, चल bundle exec
पता चलता है कि बंडलर सही गहरे लाल रंग का उपयोग करते हुए और रेल है संस्करणों:
$ bundle exec which ruby
/path/to/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
$ bundle exec `which ruby` -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ bundle exec which rails
/path/to/shared/bundle/ruby/1.8/bin/rails
$ bundle exec `which rails` -v
Rails 3.0.9
जाहिर है कुछ यहाँ wonky है ... मैं सिर्फ क्या पता नहीं है।
अद्यतन 6/26/2011
सीमस $LOAD_PATH के लिए कहा ...
अद्यतन 2011/06/26 (बाद में)
सीमसके लिए पूछा गयाऔर pp ENV ... ENV
आउटपुट में, मैंने पाया कि GEM_PATH
सही नहीं था। मेरी staging.rb
पर्यावरण फ़ाइल में, मेरे पास है:
GEM_HOME = "/home/[REDACTED]/.rvm/gems/[email protected][REDACTED]"
GEM_PATH = "/home/[REDACTED]/.rvm/gems/[email protected][REDACTED]:/home/[REDACTED]/.rvm/gems/[email protected]"
... जो स्पष्ट रूप से सम्मानित किया जा रहा है।मेरी कोड में कहीं और नहीं वहाँ GEM_HOME
या GEM_PATH
अद्यतन 6/27/2011
सीमस .bundle/config
सामग्री के लिए कहा के एक उल्लेख ...
आपका '/ साझा/बंडल/गहरे लाल रंग का/1.8 /' इसे दूर देता है: अपने कंसोल अभी भी 1.8 1.9 उपयोग कर रहा है, नहीं। –
लेकिन प्रॉम्प्ट "रूबी-1.9.2-पी 180" कहता है? – coneybeare
@ कनीबीयर: लेकिन '/ साझा/बंडल/रूबी/1.8' 1.8 कहता है? यदि आप इसका उपयोग नहीं कर रहे हैं तो '/ साझा/बंडल/रूबी/1.8' निकालें। आपको फिर से 'बंडल इंस्टॉल' चलाने की आवश्यकता हो सकती है। –