特定の文字列にのみ一致するファイルをロードする方法はありますか?たとえば、account1.rb
account2.rb
などと一致するファイルをロードするとします。Ruby 'require'ワイルドカード式
require File.expand_path("../account*.rb", __FILE__)
のようにすることができますが、もちろんこれは機能しません。これを行う最善の方法は何ですか?
特定の文字列にのみ一致するファイルをロードする方法はありますか?たとえば、account1.rb
account2.rb
などと一致するファイルをロードするとします。Ruby 'require'ワイルドカード式
require File.expand_path("../account*.rb", __FILE__)
のようにすることができますが、もちろんこれは機能しません。これを行う最善の方法は何ですか?
あなたはループで同じことを行うことができます:expand_path
方法が唯一のパスを解決
Dir.glob(File.expand_path("../account*.rb", __FILE__)).each do |file|
require file
end
。ワイルドカードは展開されません。
私はこれを使用して、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
私はこれを使用します仕事:
Dir.entries(File.dirname(__FILE__))
.grep(/test.*\.rb/) { | file | require_relative file }
特定の文字と一致させたい場合はどうすればよいですか? "account_a.rb"、 "account_b.rb"など – denniss
1文字は '?'で表されます。 – tadman