2010-08-18 14 views
5

मैं सिर्फ रूबी 1.9.2 करने के लिए रूबी 1.8.7 से नवीनीकरण प्रक्रिया शुरू कर दिया (RVM का उपयोग)। मेरे पास मेरे सभी एप्लिकेशन 'स्क्रिप्ट/सर्वर' (या 'रेल सर्वर') का उपयोग करके 1.9.2 के साथ चल रहे हैं, हालांकि, केवल रेल 3.0.0 आरसी अनुप्रयोग पैसेंजर के साथ काम करते हैं। त्रुटि रेल 2.3.8 आवेदन पत्र द्वारा दिए गए संदेश है:RVM, रूबी 1.9.2, रेल 2.3.8, यात्री और "US-ASCII में अवैध बाइट क्रम"

में US-ASCII

मेरा अनुमान है कि है कि यह एक यात्री मुद्दा है अवैध बाइट क्रम। मैंने here पाया RVM गाइड का उपयोग कर यात्री 2.2.15 स्थापित किया। कोई भी विचार इस बग को कैसे ठीक करें? धन्यवाद। मैं एक स्टैक ट्रेस शामिल करने के लिए नवीनीकृत किया है: मजबूर स्ट्रिंग एन्कोडिंग की अद्भुत दुनिया के लिए

/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/template_handlers/erb.rb:14:in `compile' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/template_handler.rb:11:in `call' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/renderable.rb:19:in `compiled_source' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/renderable.rb:68:in `compile!' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/renderable.rb:61:in `compile' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/renderable.rb:28:in `render' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/template.rb:205:in `render_template' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/base.rb:265:in `render' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/base.rb:352:in `_render_with_layout' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_view/base.rb:262:in `render' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/base.rb:1250:in `render_for_file' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/base.rb:942:in `render' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:51:in `block in render_with_benchmark' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:in `block in ms' 
/Users/kevin/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/benchmark.rb:309:in `realtime' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:in `ms' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:51:in `render_with_benchmark' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/mime_responds.rb:135:in `block in custom' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/mime_responds.rb:179:in `call' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/mime_responds.rb:179:in `block in respond' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/mime_responds.rb:173:in `each' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/mime_responds.rb:173:in `respond' 
/Users/kevin/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-2.3.8/lib/action_controller/mime_responds.rb:107:in `respond_to' 
/Users/kevin/Sites/sample/app/controllers/main_controller.rb:7:in `index' 
+0

त्रुटि के बारे में कोई अन्य जानकारी? यह कहां होता है? शायद स्टैक ट्रेस? –

+0

बस इसे शामिल करने के लिए अपडेट किया गया। –

उत्तर

6

अपनी मुख्य_controller.rb फ़ाइल के शीर्ष पर

# encoding: UTF-8
जोड़ने का प्रयास करें। यदि यह काम करता है, तो आप अपनी स्रोत फ़ाइल में एक गैर यूएस ASCII चरित्र से निपट रहे हैं।

  • स्रोत कोड एन्कोडिंग:

    रूबी 1.9 में, हम तीन एन्कोडिंग संदर्भों साथ काम कर रहे हैं जब तक जादू टिप्पणी मैंने ऊपर की सूची मौजूद है, एक स्रोत फ़ाइल में स्ट्रिंग्स, US-ASCII डिफ़ॉल्ट रूप से के रूप में व्याख्या कर रहे हैं ।

  • बाहरी एन्कोडिंग: एक पाठ फ़ाइल में पात्रों वातावरण के रूप में एक ही एन्कोडिंग में माना जाता है। हालांकि कोई उपयोग करने के लिए एन्कोडिंग निर्दिष्ट कर सकते हैं। उदाहरण: खुला (mydata.txt, "आर: यूटीएफ -8")।
  • आंतरिक एन्कोडिंग: यह निर्दिष्ट करता है कि किसी फ़ाइल से पढ़ने के बाद टेक्स्ट डेटा को एन्कोड किया जाता है। डिफ़ॉल्ट रूप से यह शून्य है, जिसका अर्थ है कि यह इसे पढ़ने के लिए उपयोग किए जाने वाले एन्कोडिंग जैसा ही होगा। अगर कुछ अलग की जरूरत है, तो इसे IO.open में निर्दिष्ट किया जा सकता है। उदाहरण के लिए: खुला (mydata.txt, 'आर: UTF-8: UTF-16LE')

अधिक जानकारी के लिए, मैं एन्कोडिंग पर James Edward Gray II's great articles पढ़ा था।

+1

धन्यवाद, लेकिन मेरे पास स्रोत फ़ाइलों में कोई गैर यूएस ASCII वर्ण नहीं हैं। मुझे लगता है कि यह एक यात्री मुद्दा होना चाहिए (यह देखते हुए कि सभी परियोजनाएं मंगल के नीचे ठीक चलती हैं)। –

1

में आपका स्वागत है; त्रुटि स्ट्रिंग में रूबी 1.8.x व्यवहार अंतर रूबी 1.9.x है।

चेक http://blog.phusion.nl/2009/02/02/getting-ready-for-ruby-191/ - उपयोगी हो सकता है। आपको शायद अपने रत्न को अपडेट करने की जरूरत है।

+0

क्या यह यात्री मणि के साथ कोई समस्या है? अनुप्रयोगों में निर्मित मोंगलियल (स्क्रिप्ट/सर्वर) का उपयोग करके ठीक से चलने लगते हैं। यह भी समझा नहीं जाता है कि क्यों 3.0.0 आरसी अनुप्रयोग काम कर रहे हैं। कोई विचार? –

2

मैं वातावरण चर कारण के बारे में pjmorse से सहमत हैं, में विशेष रूप से मेरी पैसेंजर/रेल सेट अप, अपराधी LANG मूल्य था।

स्क्रिप्ट/सर्वर के माध्यम से अपना रेल ऐप शुरू करते समय, मेरे पास LANG = en_CA.UTF-8 था, लेकिन यात्री के साथ ऐप को उठाते समय नहीं।

समाधान: यात्री विन्यास एक आवरण के साथ रूबी शुरू करने के लिए संशोधित करें, http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/

उपयोग यह एक आवरण के रूप में देखें:

#!/bin/sh 
export LANG=en_CA.UTF-8 
exec "/Your_Default_Ruby_Path/ruby" "[email protected]" 

नोट Your_Default_Ruby_Path जो कुछ http की PassengerRuby मूल्य में किया गया है। रैपर सेट अप करने से पहले conf conf।

5

मैं Ubuntu (11 पर इसी तरह के मुद्दों था।10) क्योंकि इस में था मेरी/etc/apache2/envvars:

## The locale used by some modules like mod_dav 
export LANG=C 
## Uncomment the following line to use the system default locale instead: 
#. /etc/default/locale 

इस पर टिप्पणी नहीं बाहर गमागमन बिना/etc/default/स्थानीय (जो LANG="en_US.UTF-8" शामिल हैं) मेरे लिए इस मुद्दे को हल उपयोग करने के लिए मेरे रूबी के लिए एक रैपर बनाओ।

+0

यह उत्तर रुब 1.9.3 में चल रहे रेल 3.2 एप के साथ उबंटू 12.04 पर मेरे लिए काम किया। ऐप में उपयोग किए जाने वाले कुछ रत्नों के लिए जेम्सटेक्स में यूटीएफ -8-एन्कोडेड वर्ण थे। –

+1

स्पॉट पर! इसके लिए धन्यवाद, बहुत दर्द बचाया। –

संबंधित मुद्दे