2008-10-25 13 views
23

मैं निर्देशिका कैसे प्राप्त करूं जहां rakefile.rb स्थित है?रेक और वर्तमान निर्देशिका

मैं इसे सब कुछ पता लगाने के लिए अपनी रूट निर्देशिका के रूप में उपयोग करना चाहता हूं।

+0

क्या आपने Dir.pwd का उत्तर माना है? अधिक उचित लगता है: http://ruby-doc.org/core/classes/Dir.html#M002316 –

+1

Dir.pwd आपको रेक निर्देशिका को लॉन्च करते समय निर्देशिका में देता है, जहां आप हैं। यह आवश्यक रूप से रेकफाइल की जगह नहीं है। – user1934428

उत्तर

37

उपयोग __FILE__ फ़ाइल स्थान निर्दिष्ट कर सकते तो आप वहाँ से निर्देशिका प्राप्त कर सकते हैं:

test.rb में

puts __FILE__ 

उत्पादन:

/users/foo/test.rb 

__FILE__ पूर्ण पथ का समाधान करता है ।

File.dirname(__FILE__) 
+14

यह अधिकतर सही है, लेकिन उस मामले में गलत है जहां रेकफाइल को किसी अन्य फ़ाइल की आवश्यकता होती है और उस फ़ाइल को रेकैकाइल के स्थान को जानने की आवश्यकता होती है; उस मामले में 'Rake.application.original_dir' वह है जो आप चाहते हैं। – TALlama

2

यदि यह एक आरओआर ऐप है तो आपका Rakefile.rb आपकी RAILS_ROOT निर्देशिका में होना चाहिए। इसलिए किसी भी स्क्रिप्ट में आप फ़ाइल नाम पाने के लिए की तरह

config.load_paths += %W(#{RAILS_ROOT}/extras) 
19

आप इसे application.original_dir विधि को फोन करके प्राप्त कर सकते हैं: फ़ाइल यह उपयोग में

इस निर्देशिका नाम पाने के लिए है। कार्य में आप एप्लिकेशन ऑब्जेक्ट एप्लिकेशन कार्य ऑब्जेक्ट पर विधि का उपयोग कर ऑब्जेक्ट प्राप्त कर सकते हैं।

+1

मुझे नहीं लगता कि यह ओपी के प्रश्न को संबोधित करता है, लेकिन इसका जवाब है _I_ तलाश रहा था। :) –

+4

रेक के बाद के संस्करण में यह है Rake.original_dir – peterk

+1

मेरे लिए Rake.application.original_dir काम किया .... –

6

क्यों न केवल DR.pwd

का उपयोग न करें?

+2

समस्या यह है कि आप किसी अन्य निर्देशिका से रेकैकाइल का आह्वान कर सकते हैं जैसे: $ rake -f subdir/rakefile और आप उस मार्ग को चाहते हैं जहां रेकफाइल मौजूद है क्योंकि आपको अन्य की आवश्यकता हो सकती है वहाँ निर्भरताएं उपलब्ध हैं। Dir.pwd का उपयोग करके आप वर्तमान कामकाजी डीआईआर देंगे लेकिन यह नहीं होगा कि आपकी अन्य निर्भरताएं कहाँ रहेंगी (कहें कि आपके पास जार फाइलें हैं, उदाहरण के लिए) – aneccodeal

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