2011-12-16 15 views
6

क्या ऐसी फ़ाइलों को लोड करने का कोई तरीका है जो केवल एक विशिष्ट स्ट्रिंग से मेल खाते हैं? उदाहरण के लिए, मान लीजिए कि मैं उन फ़ाइलों को लोड करना चाहता हूं जो account1.rbaccount2.rb से मेल खाते हैं और इसी तरह से। मैं कुछ ऐसा करने में सक्षम होना चाहता हूं जैसेवाइल्डकार्ड अभिव्यक्ति के साथ रूबी 'की आवश्यकता'

require File.expand_path("../account*.rb", __FILE__) 

लेकिन निश्चित रूप से यह काम नहीं करता है। इसे करने का बेहतरीन तरीका क्या है?

उत्तर

12

तुम एक पाश के साथ एक ही बात कर सकते हैं:

Dir.glob(File.expand_path("../account*.rb", __FILE__)).each do |file| 
    require file 
end 

expand_path विधि केवल रास्तों हल करता है। यह वाइल्डकार्ड का विस्तार नहीं करता है।

+0

यदि मैं एक विशिष्ट चरित्र से मेल खाना चाहता हूं तो क्या होगा? "account_a.rb", "account_b.rb" और – denniss

+1

पर एक एकल वर्ण '? 'द्वारा दर्शाया गया है। – tadman

1

मैंने रुपये का उपयोग किए बिना मिनीटेस्ट के लिए टेस्ट-सूट बनाने के लिए इसका उपयोग करने की कोशिश की। स्वीकार किए जाते हैं जवाब मेरे लिए काम नहीं किया था, लेकिन ऐसा किया:

require "minitest/autorun" 

Dir.glob("*_test.rb").each do |file| 
    require_relative file 
end 
0

मैं इस का उपयोग करें:

Dir.entries(File.dirname(__FILE__)). 

    grep(/test.*\.rb/) { | file | require_relative file } 

दुर्भाग्य से रूबी डॉट से पहले नई-पंक्तियों की अनुमति नहीं है, इसलिए आदर्श रूप नहीं है कार्य:

Dir.entries(File.dirname(__FILE__)) 

    .grep(/test.*\.rb/) { | file | require_relative file } 
संबंधित मुद्दे