2016-05-22 10 views
1

Ich arbeite an dieser Rails-Anwendung mit einer Engine, die eine Art Sub-Anwendung ist, Hinzufügen von mehr Routen zu meiner bestehenden Anwendung.Rails: Autoload-Dateien in Engine Lib-Verzeichnis

Das Konzept ist so kraftvoll, dank Schienen.

Aber ich bin mit dieser seltsamen Herausforderung konfrontiert, Dateiänderungen im lib-Verzeichnis meiner engines im Entwicklungsmodus automatisch zu laden. Jedes Mal, wenn ich eine Änderung im App-Verzeichnis der Engine mache, sei es Model oder Controller, funktioniert es einwandfrei, aber es werden keine Änderungen an irgendwelchen Dateien im Verzeichnis lib vorgenommen. Kann ich das irgendwie machen? Danke für Ihre Hilfe.

Antwort

-1

Setzen Sie den folgenden Code in Ihr config/application.rb

config.eager_load_paths += ["#{Rails.root}/lib"] 

Wenn Sie wollen, dass diese nur im Entwicklungsmodus Sie die folgende

config.eager_load_paths += ["#{Rails.root}/lib"] if Rails.env.development? 
+0

Die Frage bezieht sich auf "Schienen Motor" nicht an die komplette "Schienen App". – Swaps

0

Nach Rails::Engine docs verwenden können automatisch geladen Pfade wie-

class MyEngine < Rails::Engine 
    # Add a load path for this specific Engine 
    config.autoload_paths << File.expand_path("../lib/some/path", __FILE__) 

    initializer "my_engine.add_middleware" do |app| 
    app.middleware.use MyEngine::Middleware 
    end 
end 

Wenn Sie nicht automatisch laden möchten, können Sie t direkt anfordern er in der Klasse-Datei mit dem benötigen Anweisung-

require 'my_engine/my_object' 
class MyModel < AR::Base 
    ... 
end 

Dies funktioniert, weil Ihr Motor bereits in Ihrer Anwendung geladen wird, so dass Sie Libs in der es zugreifen können.