Ich habe Rack::Reload
gemäß diesem Thread
Wird mit dem Thin via thin start -R config.ru
ausgeführt, lädt jedoch nur neu hinzugefügte Routen neu. Wenn ich die bereits bestehende Route ändere, wird immer noch der alte Code ausgeführt.
Wenn ich eine neue Route hinzufüge, wird sie neu geladen, so dass sie zugänglich ist, aber nichts anderes neu geladen wird.
Zum Beispiel, wenn ich Routen zu
ändere %Vor% Than /
würde immer noch foo
bedienen, obwohl es sich geändert hat, aber /foo
würde baz
korrekt neu laden und bereitstellen.
Ist das normal, oder fehlt mir etwas? Ich würde erwarten, dass die gesamte Quelldatei neu geladen wird. Der einzige Weg, den ich mir gerade vorstellen kann, ist der Neustart des gesamten Webservers, wenn sich das Dateisystem ändert.
Ich verwende Windows Vista x64, daher kann ich shotgun wegen fork()
nicht verwenden.
Ihr könnt sinatra-reloader ausprobieren, von dem bekannt ist, dass es unter Windows gut funktioniert (auch schneller als Schrotflinte) .
Das funktioniert:
%Vor%Es kommt darauf an, wo Sie die require-Anweisung haben. Aber ich finde die folgende Lösung eleganter und robuster:
%Vor%Funktioniert Shotgun nicht unter Windows?
Aus der README:
%Vor%Dies ist eine automatische Neuladeversion des Rackup-Befehls, der mit ausgeliefert wird Gestell. Es kann als eine Alternative zu der bereitgestellten komplexen Nachladelogik verwendet werden durch Web-Frameworks oder in Umgebungen, die das Neuladen von Anwendungen nicht unterstützen.
Der Shotgun-Befehl startet einen der von Rack unterstützten Server (z. B. mongrel, webrick) und lauscht auf Anfragen, lädt aber keinen Teil des eigentlichen Anwendung. Jedes Mal, wenn eine Anfrage empfangen wird, lädt sie die Anwendung in Der untergeordnete Prozess verarbeitet die Anforderung und beendet den untergeordneten Prozess. Das Ergebnis ist ein sauberes, anwendungsweites Neuladen aller Quelldateien und Vorlagen auf jede Anfrage.
Sie können auch einen Trinidad JRuby Rack-Container verwenden, der auf Tomcat basiert. Nach meiner Erfahrung ändert sich das Neuladen standardmäßig, ohne dass die Quelldateien geändert werden müssen. Verdammt schnell auch. Natürlich ist es nicht gut, wenn Sie native Bibliotheken verwenden, aber wenn Sie Windows einsetzen, sind Sie wahrscheinlich daran gewöhnt, einen reinen Rubin-Ansatz zu wählen.
Die Syntax ist genauso einfach wie die Thin-Methode:
%Vor%Es gibt kein Java-spezifisches Yak-Shaving (d. h. das Erstellen von web.xml oder WARen Sie Ihre Ruby-Anwendung), und das Gem ist einfach zu installieren.