2012-01-31 8 views
1

通常、rubyプロジェクトにはlib、bin、spec(またはtest)フォルダがあります(少なくとも生成されたgemにあります)。今度は、libの各ファイルにrequire_relativeインポートが多くあり、spec(またはtest)ファイルのrequire_relative '../lib/some_files'も醜いです。 require_relativeのすべてのインポートを排除する方法はありますか? FILEとある種のトリックがあると思いますが、正確にはわかりません。ruby​​プロジェクトで多くのrequire_relativesを削除する

答えて

3

あなたはこのような何かを行うことができます。

current_folder = File.expand_path('../', __FILE__) # get absolute directory 
Dir["#{current_folder}/subfolder/**/*.rb"].each {|f| require f} 

これは、現在のディレクトリのサブフォルダ内のすべてのファイルが必要になります。 require_relativeもカーネル関数なので特別なことはありません。

これらのファイルが相互に依存し、定義された順序でロードする必要がある場合は、定義済みの順序でrequire/require_relativeを手動で指定する必要があります。また、あなたは排除する必要がある仕様とlibに重複が必要な場合


、その後、あなたはこの道を行くことができます:あなたの/libフォルダのルートにトップレベルの名前空間の名前のファイルを追加し、ここからファイルを入れ子に必要その後、/spec/spec_helper.rbから、この単一のファイルが必要です。これは、例を単純化している

# /lib/coolgem.rb 
module CoolGem; end 

current_folder = File.expand_path('../', __FILE__) 
Dir["#{current_folder}/coolgem/*.rb"].each {|f| require f} 


# /spec/spec_helper.rb 
require_relative '../lib/coolgem' 

を、あなたはなどのモジュールごとのネストされたため、このような初期化ファイルを持つことができます

関連する問題