Rails 3.2.2を使用していて、特定のディレクトリにあるすべてのコードを再帰的にロードしたいと考えています。例えば:
[Rails root]/lib/my_lib/my_lib.rb
[Rails root]/lib/my_lib/subdir/support_file_00.rb
[Rails root]/lib/my_lib/subdir/support_file_01.rb
...
グーグルに基づいて、私は試しました:
config.autoload_paths += ["#{Rails.root.to_s}/lib/my_lib/**"]
config.autoload_paths += ["#{Rails.root.to_s}/lib/my_lib/**/"]
config.autoload_paths += ["#{Rails.root.to_s}/lib/my_lib/**/*"]
config.autoload_paths += ["#{Rails.root.to_s}/lib/my_lib/{**}"]
config.autoload_paths += ["#{Rails.root.to_s}/lib/my_lib/{**}/"]
これらはいずれもコードをロードせず、「初期化されていない定数」エラーが発生します。
これにより、ファイルはに直接ロードされます/my_lib/
が、サブディレクトリにはロードされません。
config.autoload_paths += ["#{Rails.root.to_s}/lib/my_lib"]
アップデート
コメントありがとうございます。
私はこれを私の中に入れましたapplication.rb
:
Dir["#{Rails.root.to_s}/lib/**/*.rb"].each { |file| config.autoload_paths += [file] }
アプリケーションは起動しますが、ライブラリで宣言されているクラスは使用できません。
> MyClass
NameError: uninitialized constant MyClass