मैं आंतरिक उपयोग के लिए एक मणि बना रहा हूँ। इसे में, मैं एक निर्देशिका से कुछ YAML लोड:रूबी में एक विशिष्ट सापेक्ष पथ से फ़ाइलों को कैसे लोड करूं?
# in <project_root>/bin/magicwand
MagicWand::Configuration::Initializer.new(...)
# in <project_root>/lib/magicwand/configuration/initializer.rb
root_yaml = YAML.load_file(
File.expand_path("../../../../data/#{RootFileName}", __FILE__))
# in <project_root>/data/root.yaml
---
apple: 100
banana: 200
coconut: 300
मैं नहीं बल्कि initializer.rb
करने के लिए data/root.yaml
रिश्तेदार के स्थान पर निर्भर नहीं होता। इसके बजाय, मैं <project_root>
का संदर्भ प्राप्त करूंगा और वहां से संबंधित पथ पर निर्भर करता हूं, जो एक स्मार्ट चाल की तरह लगता है।
सबसे पहले, क्या इस बारे में जाने का सबसे अच्छा तरीका है? दूसरा, यदि हां, तो मैं यह कैसे कर सकता हूं? मैंने विभिन्न File
विधियों की जांच की, लेकिन मुझे नहीं लगता कि ऐसा कुछ भी है। मैं रूबी 1.9 का उपयोग कर रहा हूँ।
अभी, मैं एक विशेष लगातार बना सकते हैं और है कि बजाय पर निर्भर करते हैं:
# in lib/magicwand/magicwand.rb
module MagicWand
# Project root directory.
ROOT = File.expand_path("../..", __FILE__)
end
लेकिन मुझे यकीन है कि मैं या तो उस दृष्टिकोण पसंद नहीं कर रहा हूँ।
एक है कि
data/root.yaml
के सापेक्ष पथ प्राप्त करने के लिए अच्छा विचार है, लेकिन यह परीक्षण के दौरान तोड़ देगा, जब मैं अक्सर पूर्ण अनुप्रयोग स्टैक को फायर करने के बजाए कक्षाओं को सीधे परीक्षण करता हूं। ऐसे मामलों में मेरा '$ 0' अलग होगा (परीक्षण धावक का मार्ग, मेरा आवेदन नहीं)। –एक साधारण ऑब्जेक्ट में लुकअप लपेटें जिसे आप परीक्षण के दौरान बाहर निकाल सकते हैं। – Theo