2011-06-29 9 views
5

をワイルドカードここでは、ファイルを開くためのrakeタスクで私のコードです:Rails.rootファイルパスが

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

が、それは(3つの可能な一致がある)任意のファイルを一致していません。最初の**は2桁の名前のフォルダです。どこが間違っていますか?

答えて

4

通常、***は展開されませんが、リテラルとして配置されます。たぶんこれが問題です。あなたが望むものは、次のようなものかもしれません。

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

各ファイルを個別に開いてください。

+0

Genius。それは完全に動作します。ありがとう! – snowangel

+0

匿名ユーザーによるコメント(拒否された編集):各行を繰り返し処理するには、 'File.open(path)'を 'File.open(path).each'に置き換えてください。 – Anne