2012-06-15 8 views
5

In application.rb, ich habeReload Schienen initializers

config.autoload_paths += %W(#{config.root}/lib 

Also, wenn ich eine Klasse unter lib ändern, meinen Code neu geladen wird.

Als ich jedoch versuchte, config/initializers zum Autoload hinzuzufügen, bemerkte ich, dass mein Code nicht aktualisiert wurde.

Wenn ich eine Erweiterung für die String-Klasse schreibe, muss ich Schienen jedes Mal neu starten, wenn ich meinen Code ändere.

Bitte beraten?

Antwort

5

Initialisierer werden nur beim Start von Schienen geladen (und nie wieder geladen). Beim Basteln in config/initializers werden Sie die Schienen jedes Mal neu starten.

Natürlich können Sie sicherstellen, dass Ihr Code in /lib definiert ist, so dass Sie immer noch sicherstellen können, dass es funktioniert, indem Sie Ihre Testsuite verwenden.

z. in lib/speaker.rb schreiben

module Speaker 
    def speak 
    puts "Ahum, listen: #{self.to_s}" 
    end 
end 

und in Ihrem initializer könnte man dann so etwas wie

class String 
    include Speaker 
end 

tun Während dies nur noch geladen werden, wenn Schienen Starten Sie Ihr Modul leichter entwickeln und testen können.

Hoffe, das hilft.

+1

Vielen Dank! – Abdo

3

Initialisierungsdateien werden nur einmal geladen, wenn der Rails Server gestartet wird. Starten Sie den Server neu, wenn die Werte des Initiators geändert werden. Weitere Informationen finden Sie in den Schienen initialization guides.

Auto Nachladen 'lib' auf Änderung

Sie können lib Dateien automatisch neu zu laden. Folgen Sie Link Autoload and Reload lib directory on change

In Konfigurieren von Rails-Anwendungen: config.reload_classes_only_on_change aktiviert oder deaktiviert das Neuladen von Klassen nur, wenn sich verfolgte Dateien ändern. Standardmäßig verfolgt alles auf Autoload-Pfade und ist auf True festgelegt. Wenn config.cache_classes wahr ist, wird diese Option ignoriert.

+0

Das war, was meine Frage war; Ich wollte den Server nicht neu starten. Ich wollte einen besseren Weg, um meinen Code zu debuggen. – Abdo

+0

(Ich sah nur die -1; es war nicht ich =)) – Abdo

+0

paukul danke für die Bearbeitung –