Ich besitze eine virtuelle Ubuntu-Maschine, auf die ich über Vagrant zugreifen kann. Auf meinem Host (Mac OS X) befindet sich ein Ordner mit einigen Dateien, die ich für die virtuelle Maschine freigebe. In dieser virtuellen Maschine möchte ich mit guard nach Dateiänderungen suchen und eine Aktion ausführen, wenn sich eine dieser Dateien ändert.
Ich habe guard richtig eingerichtet und beim Ändern der freigegebenen Datei in der virtuellen Maschine funktioniert es einwandfrei und führt die entsprechenden Skripte aus. Wenn ich jedoch versuche, eine freigegebene Datei von meinem Host-Computer aus zu ändern, wird dieses Dateiänderungsereignis nicht weitergegeben und der Guard reagiert nicht.
So sieht mein vagabundierender freigegebener Ordner aus (ziemlich übliches Zeug)
local_config.vm.share_folder "app", "/var/www/app/current", "../app"
Ich habe sogar versucht, NFS-Sharing ( :nfs => true
) zu verwenden, aber es hat nicht geholfen.
Gibt es eine Möglichkeit, Dateiänderungsereignisse vom Host auf die virtuelle Maschine zu übertragen? Oder ist das etwas von Vagrant / VirtualBox?
AKTUALISIEREN:
Nach einigen weiteren Versuchen habe ich ZenTest gem installiert , das ein Autotest-Tool enthält, das ähnliche Funktionen in Bezug auf Dateiänderungsereignisse ermöglicht.
Beim Ausführen des Autotests auf einer virtuellen Maschine und beim Ändern von Dateien von meinem Hostcomputer werden diese Änderungen weitergegeben und der Autotest reagiert .
Auf dieser Grundlage scheint es, dass die Weitergabe von Dateiänderungsereignissen ein Problem des Schutzes ist, nicht des Vagabunden oder der virtuellen Box.
Ich habe die Implementierungsunterschiede zwischen guard und autotest nicht untersucht.
Jetzt weiß ich, dass es möglich ist, Dateiänderungsereignisse vom Host in der virtuellen Maschine abzufangen. Hat jemand eine Idee, wie dies mit guard erreicht werden kann? Ich mag Wache mehr wegen seiner DSL und generischen Benutzerfreundlichkeit.
quelle
Ich weiß, dass dies eine ältere Frage ist, aber hier ist eine aktuellere Antwort:
-o/--listen-on
Dokumentation zu Guard- OptionenHier zum schnellen Nachschlagen eingefügt:
quelle
Wenn jemand auf dieses Problem stößt und der Wächter immer noch nicht funktioniert ...
Am Ende habe ich watchr benutzt . Es ist eine Alternative zur Bewachung. Die Übertragung von Ereignissen vom Host zum Gastcomputer funktioniert in watchr einwandfrei. Es ist auch flexibler als Autotest.
quelle
Events propagation from host to guest machine works ok in watchr.
Wie? Verwendet es Polling? Wenn VirtualBox die Ereignisse nicht weitergibt, wie kann es wissen, wann sich eine Datei geändert hat?