私はあなたの必要性を理解したかどうかわかりません (私の英語は下手です :-/ ); とにかく、gem が必要なときにロードされるディレクトリを決定することが問題である場合は、次を使用できますGem::Specification.lib_dirs_glob
。
Gem::Specification.find_by_name('irbtools').lib_dirs_glob
#=> "/home/my_user/.rvm/gems/ruby-1.9.3-p125/gems/irbtools-1.2.2/lib"
Gem::Specification.find_by_name('xyz').lib_dirs_glob
# raises a Gem::LoadError
したがって、可能な実装は次のload_from
ようになります。
def load_from(gem_name, path)
path_to_load = File.join(Gem::Specification.find_by_name(gem_name).lib_dirs_glob, path)
Dir.glob(path_to_load).each(&method(:load))
end
ロードしようとしていますThor::CoreExt
:
Thor::CoreExt #=> NameError: uninitialized constant Thor
load_from 'thor', 'thor/core_ext/*.rb'
Thor::CoreExt #=> Thor::CoreExt
これは私のマシンで ruby 1.9.3 と gem 1.8.21 で動作します。