2012-12-07 5 views
5

Ich möchte ActiveAdmin beim Ausführen der Tests deaktivieren.Wie Blacklist Verzeichnis Laden in Rails?

Also füge ich require: false zum Gemfile hinzu und überprüfe if defined?(ActiveAdmin) in Routen und Initialisierer.

Aber Rails lädt noch die Modelle Form app/admin so bin ich Fehler immer ähnlich wie /app/admin/admin_user.rb:1:in ‚: nicht initialisierte Konstante ActiveAdmin (Nameerror)`

Was ist der beste Weg, um ‚schwarze Liste‘ der app/admin Verzeichnis nicht geladen werden?

Antwort

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

In config/application.rb hinzu:

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 

Sie haben zu ersetzen "/ mnt/hgfs/Projekt/eventmust/app/admin" von Ihrem Weg, es ist nicht sehr sauber, aber es ist Arbeit.

+0

Scheint nicht für mich zu arbeiten. Die 'config.paths' haben nicht den' app/admin' Pfad. Wenn man es aus 'new_eager_load_paths' löscht, wird die Datei nicht eifrig geladen, aber es wird später von einigen Rails-Zaubern versucht (zum Beispiel lädt' DashboarsController' - lädt das 'admin/dashboard.rb', was nicht passieren sollte). Gedanken? –

+0

In Rails 3.2.8, teste ich nur mit einer Klasse in einer Datei in app/admin und es funktioniert :(. Überprüfen Sie Ihre config.paths und config.ager_load_paths, und vielleicht versuchen Sie die 4lines am Ende der Datei config/application.rb (kurz vor dem 2 "Ende"). –

+0

On Rails '3.2.8' though. Bereits die Pfade überprüft und alle Verweise auf den' admin' Pfad entfernt, auch am Ende des 'environments/test .rb' (welches nach 'config/application.rb' geladen wird und bestätigt, dass es tatsächlich geladen ist). –