2016-10-31 1 views
1

私はモジュールの倍数でルビープログラムを持っています。これらのモジュールはすべてrequire 'path_form_a_specific_root'のモジュールを使用します。 例:Ruby - 特定のルートからのすべての必要なファイルのアドレス

dir0 /には 'test1.rb'と 'test2.rb'があります。

dir0/dir1 /には「test3.rb」があります。

dir0/dir1/dir2には「test4.rb」があります。

'test1.rb'と 'test2.rb'を使用するには 'test3.rb'はrequire 'dir0\test1'require 'dir0\test2'を使用します。

また、 'test3.rb' 'を使用するには' test4.rb 'はrequire 'dir0\dir1\test3'を使用します。

これらのパスはすべて「dir0」で始まります。私はこれらのパスを 'dir0'とは無関係に変換したい。

答えて

1

あなたはあなたのすべてのモジュールがロード・パスであり、あなただけの一つではなく相対パスを使用するrequire_relativeの代わりrequireを使用する場合があります

require 'module_name' 
0

を必要とする。この場合、ruby -I dir0/ <entry_point>

を使用してプログラムを起動することができます

DIR0/DIR1/test3.rb

:ルートベースの
%w|test1 test2|.each { |f| require_relative "../#{f}" } 

DIR0/DIR1/DIR2/test4.rb

require_relative "../test3" 

ラウンド「require_all」ヘルパーを作成することです他の方法:

test_all.rb

Dir['*/**/*.rb'].each &Kernel.method(:require) 

d require 'test_all'をネストしたファイルのどこでも使用してください。

関連する問題