3

Rails が :root/app ディレクトリのパスを自動ロードする方法がとても気に入っています。どこでも明示的なルビーオートロードを使用するのではなく、作成している宝石で同様のことをしたいと思います。

4

2 に答える 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 に答える