Rails が :root/app ディレクトリのパスを自動ロードする方法がとても気に入っています。どこでも明示的なルビーオートロードを使用するのではなく、作成している宝石で同様のことをしたいと思います。
質問する
1159 次
2 に答える
3
Autoloadは、モジュールから (シンボルまたは文字列による) ファイル名へのマッピングを定義します。
ディレクトリ内のすべてのファイルを自動ロードしたい場合は、ファイルを開かずにファイルが表すモジュールを知る方法が必要です。
これは、命名規則に従うことで実現できます。慣例を method にカプセル化すると仮定するとfilename_to_module
、フォルダーを再帰的に反復して呼び出すだけで済みます。autoload(filename_to_module(filename), filename)
このようなもの:
libdirs = File.join("**", "lib")
Dir.glob(libdirs).each{ |filename|
autoload( filename_to_module(filename), filename)
}
私String#camelize
は自分のfilename_to_module
機能のようなものを使用します。に既に依存していない限り、おそらく自分で実装するでしょうActiveSupport
。
于 2013-07-16T22:42:58.163 に答える