2011-12-16 61 views
6

特定の文字列にのみ一致するファイルをロードする方法はありますか?たとえば、account1.rbaccount2.rbなどと一致するファイルをロードするとします。Ruby 'require'ワイルドカード式

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

のようにすることができますが、もちろんこれは機能しません。これを行う最善の方法は何ですか?

答えて

12

あなたはループで同じことを行うことができます:expand_path方法が唯一のパスを解決

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

。ワイルドカードは展開されません。

+0

特定の文字と一致させたい場合はどうすればよいですか? "account_a.rb"、 "account_b.rb"など – denniss

+1

1文字は '?'で表されます。 – tadman

1

私はこれを使用して、Rspecを使用せずにMinitestのテストスイートを作成しようとしました。受け入れ答えは私のために動作しませんでしたが、これはやった:

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

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

残念ながら、Rubyは、ドットの前に改行を許可していないので、理想的な形にはない:

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 } 
関連する問題