2010-06-13 12 views
24

मैं एक हैश और एक YAML फ़ाइल है कि मैं निम्न आदेश के साथ पार्स करने कर रहा हूँ अंदर सूची शामिल करना चाहते हैं:वाईएएमएल फ़ाइल के अंदर हैश?

APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml") 

मेरे YAML फ़ाइल इस तरह दिखता है:

feeds: [{:url => 'http://www.google.com', :label => 'default'}] 

लेकिन यह नहीं है काम करने लगते हैं। मैं ऐसी चीज़ को प्राप्त करने के बारे में कैसे जाउंगा?

धन्यवाद, युवाल


संपादित करें: क्षमा करें, दोस्तों। मैं अभी भी इस बारे में अस्पष्ट हूं कि यह कैसे करें और मुझे संदेह है कि यह कुछ हद तक अस्पष्ट वाक्यांश के कारण है। मैंने एक बेहतर वाक्यांश, अधिक व्यापक प्रश्न here से पूछा। धन्यवाद!

उत्तर

29

आपको इस तरह की यह

feeds: 
- 
    url: 'http://www.google.com' 
    label: 'default' 

नोट रिक्ति यहां महत्वपूर्ण है को चिह्नित कर सकते हैं। "-" एक ही स्थान (एक टैब नहीं) द्वारा इंडेंट किया जाना चाहिए, और उसके बाद एक ही स्थान। और url & label को दो रिक्त स्थानों से इंडेंट किया जाना चाहिए (टैब भी नहीं)।

इसके अतिरिक्त इस उपयोगी हो सकता है: http://www.yaml.org/YAML_for_ruby.html

14

Ceilingfish का जवाब हो सकता है तकनीकी रूप से सही है, लेकिन वह एक पंक्ति के अंत में एक सफेद स्थान का उपयोग करने के सिफारिश की। यह त्रुटियों के लिए प्रवण है और यह एक अच्छा अभ्यास नहीं है!

यह कैसे मैं यह कर देगी:

निम्नलिखित सामग्री के साथ एक settings.yaml फ़ाइल बनाएँ:

--- 
feeds: 
    :url: 'http://www.google.com' 
    :label: 'default' 

यह निम्न हैश पैदा करेगा के बाद YAML फ़ाइल लोड किया गया है:

irb(main):001:0> require 'yaml' 
=> true 
irb(main):002:0> YAML.load_file('settings.yaml') 
=> {"feeds"=>{:url=>"http://www.google.com", :label=>"default"}} 
irb(main):003:0> 

इस उदाहरण में, मैं प्रतीकों का भी उपयोग करता हूं क्योंकि यह रुबी में रूबी कुंजियों को संग्रहीत करने का पसंदीदा तरीका प्रतीत होता है।

+0

लेकिन क्या यह वास्तव में वह अनुरोध करेगा जो उसने अनुरोध किया था? मुझे लगता है कि वह "फ़ीड्स" चाहता है कि वह हैश की सूची हो, न सिर्फ एक हैश। मैं एक ही स्थान पर हूं, और नाजुक दृष्टिकोण को भी पसंद नहीं करता जिसके लिए पिछली जगह की आवश्यकता होती है। कोई विचार? – estan

+0

कभी नहीं। मैं यह समझ गया। इस सवाल का अपना जवाब पोस्ट करेंगे। – estan

4

पुराना सवाल, लेकिन जब से मैं एक समान स्थान पर था ... जैसा जैस्पर ने इंगित किया, सीलिंगफिश का जवाब सही है। लेकिन आप

feeds: 
- url: 'http://www.google.com' 
    label: 'default' 

डैश के बाद पिछली सफेद जगह पर भरोसा करने से बचने के लिए भी कर सकते हैं।

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