2009-07-11 7 views
20

Gibt es eine Möglichkeit in Rails, dass die ENV "lib" -Dateien neu lädt, ohne dass der Server neu gestartet werden muss? Ich arbeite mit einigen Klassen, die ich in einem Modul in "lib" habe. Um meine Änderungen zu sehen, muss ich den Server jedes Mal neu starten. Ich vermute, das ist die Art, wie Rails funktionieren soll, aber es ist ziemlich mühsam, wenn man Bibliotheksdateien und/oder Plugins entwickelt.(Rails) Neuladen von "lib" -Dateien ohne Neustart des Servers ...?

Sicher gehe ich das falsch ....?

Beste

EDIT 1

Weder Antwort 1 noch 2 für mich gearbeitet. Stattdessen wurden mir Fehler von den Controllern präsentiert, die das Modul verwendet haben. Zu Ihrer Information, ich habe 3 Dateien in meinem Verzeichnis "lib/xmlitems". Ich habe versucht, dieses Unterverzeichnis zu laden, dann referenzierte ich die einzelne Datei, die alle anderen Dateien "benötigt". Soll ich alle Dateien einzeln laden?

+0

im doppelten Ziel der Suche, keine der Antworten sind besonders gut. Da Duplikate erfordern, dass die Frage im Ziel beantwortet wird, stimme ich wieder zu öffnen. –

Antwort

-1
module ActsAsReloadable 
    def self.included(base) 
    ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development' 
    end 
end 

es zu benutzen, einfach include ActsAsReloadable in Ihrem lib/* Dateien und fügen Sie config.autoload_paths += %W(#{config.root}/lib) in config/application.rb

-3

Es gibt einen einfacheren Weg: fügen Sie einfach

config.reload_plugins = true 

development.rb

+0

Das hat bei mir nicht funktioniert. –

13

Für Schienen 3 und Rails 4.0, variieren Sie die in @ txwikingers Antwort gegebenen Anweisungen. In Ihrer Umgebung/development.rb Datei, fügen Sie die folgenden Zeilen:

ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib') 
ActiveSupport::Dependencies.explicitly_unloadable_constants << '<my modules in lib>' 
+0

Als ich das tat, benutzte ich ein Modul namens :: Utils. Als ich meinen Code ausführte, gab es mir einen Fehler, 'nicht initialisierte Konstante ActionView :: CompiledTemplates :: Utils'. –

+0

Hm. Könnten Sie Ihren Code auf pastie.org setzen und einen Link teilen? – JellicleCat

+0

Es stellte sich heraus, dass ich selber schuld war, obwohl ich dachte, ich hätte es mit einem git diff isoliert. Sorry JellicleCat, leider hat Stackoverflow meine -1 gesperrt. :(Ich kann Ihre Antwort immer noch nicht verifizieren. –

Verwandte Themen