2010-07-05 5 views
22

Ich habe ein Juwel geschrieben, das in config/für eine Konfigurationsdatei aussieht, dieses Bit funktioniert gut und es wirft keine Probleme, aber wenn der Benutzer eine Konfiguration ändert, müssen sie das Programm stoppen und starte es noch einmal, bevor mein Juwel die neue Konfiguration lädt, was es erforderlich machen würde, eine Rails-App jede Änderung neu zu starten, was nicht ideal ist.erfordern eine Datei erneut, wenn es geändert wird

gibt es eine Möglichkeit, „wieder benötigen“, um eine Datei, so dass jeder laufen sie es lädt bis frisch stattdessen die zwischengespeicherte Version der Verwendung

Antwort

41

Sie load statt require verwenden können. Dadurch wird die Datei unabhängig davon geladen, ob sie bereits zuvor geladen wurde. Beachten Sie, dass Sie mit load die Erweiterung .rb angeben müssen, die optional mit require ist. So wird require "path/to/myconfig"load "path/to/myconfig.rb".

Beachten Sie, dass dadurch nichts dedefiniert wird, das durch die vorherige Konfiguration definiert wurde. Wenn also die Konfiguration von $verbose = true; $debug = true zu $verbose = false geändert wird, dann wird $verbose falsch sein, aber $debug wird immer noch wahr sein, nachdem die Konfiguration neu geladen wurde.

Natürlich müssen Sie die Anweisung load irgendwo, wo es jedes Mal ausgeführt wird, wenn die Konfigurationsdatei neu geladen werden soll (d. H. Innerhalb einer Methode oder Hook).

Verwandte Themen