2011-06-29 11 views
5

यहाँ एक फ़ाइल को खोलने का एक रेक कार्य में मेरी कोड है:Rails.root filepath वाइल्डकार्ड

File.open(Rails.root.join("public/system/xmls/**/original/*.csv"),"r") do |file| 
    #etc 

लेकिन यह किसी भी फाइल (वहाँ तीन संभावित मिलान कर रहे हैं) मिलान नहीं है। पहला ** एक 2 अंकों का नाम वाला फ़ोल्डर है। मुझसे कहां गलती हो रही है?

उत्तर

4

join विधि आमतौर पर * और ** का विस्तार नहीं करती है लेकिन उन्हें अक्षर के रूप में रखती है। शायद यह समस्या है। आप जो चाहते हैं वह इस तरह अधिक हो सकता है:

Dir.glob(Rails.root.join("public/system/xmls/**/original/*.csv")).each do |path| 
    File.open(path) do |file| 
    # ... 
    end 
end 

प्रत्येक फ़ाइल को व्यक्तिगत रूप से खोलें और आपको ठीक होना चाहिए।

+0

जीनियस। यह पूरी तरह से काम करता है। धन्यवाद! – snowangel

+0

अज्ञात उपयोगकर्ता द्वारा टिप्पणी (अस्वीकार संपादित): प्रत्येक पंक्ति पर पुनरावृत्ति करने के लिए, 'File.open (पथ)' को 'File.open (पथ) .each' से प्रतिस्थापित करें। – Anne

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