2012-12-07 2 views
5

テストを実行するときにActiveAdminを無効にしたいとします。Railsでディレクトリの読み込みをブラックリストに登録するには?

したがって、をGemfileに追加し、ルートと初期化子でif defined?(ActiveAdmin)を確認します。

しかし、Railsは、まだモデルは、このように私は「/app/admin/admin_user.rb:1:inのようなエラーを取得していますapp/adminを形成する負荷:初期化されていない定数ActiveAdmin(NameError) `

『ブラックリスト』への最善の方法は、ロードされてからapp/adminディレクトリとは何ですか?コンフィグで

答えて

6
# config/environments/test.rb 

path_rejector = lambda { |s| s.include?("app/admin") } 

# Remove the path from being loaded when Rails starts: 
config.eager_load_paths = config.eager_load_paths.reject(&path_rejector) 

# Remove the path from being lazily loaded 
ActiveSupport::Dependencies.autoload_paths.reject!(&path_rejector) 
0

/application.rb追加:

config.paths.delete("app/admin") 
new_eager_load_paths = config.eager_load_paths.dup 
new_eager_load_paths.delete("/mnt/hgfs/project/app/admin") 
config.eager_load_paths = new_eager_load_paths 

をあなたのパスによって "を/ mnt/hgfsディレクトリ/プロジェクト/ eventmust /アプリ/管理" を交換する必要があり、それは非常にきれいではないのですが、それは仕事です。

+0

私にとってはうまくいかないようです。 'config.paths'には' app/admin'パスが全くありません。 'new_eager_load_paths'からそれを削除しても、ファイルは熱心に読み込まれませんが、後でいくつかのRailsの魔法(例えば、' DashboarsController'を読み込み - 発生しないで 'admin/dashboard.rb'を読み込みます)によってそれをやろうとします。思考? –

+0

rails 3.2.8では、app/adminのファイル内のクラスだけでテストしています。(config.pathsとconfig.eager_load_pathsを調べて、ファイルの最後に4行を追加しようとしますconfig/application.rb(2 "end"の直前) –

+0

Rails '3.2.8'でも既にパスを検査し、' admin'パスへの参照をすべて削除しました。 .rb'(これは 'config/application.rb'の後にロードされ、実際にロードされていることを確認します)。 –

関連する問題