Vagrant 共享文件夾和文件更改事件
我有通過 Vagrant 訪問的 ubuntu 虛擬機。在我的主機(Mac OSX)上,有一個包含幾個文件的文件夾,我共享到虛擬機。在該虛擬機中,我想使用guard來監視文件更改並在這些文件中的任何一個更改時執行一些操作。
我正確設置了保護,當從虛擬機中更改共享文件時,它工作正常並執行適當的腳本。但是,如果我嘗試從我的主機更改共享文件,則此文件更改事件不會傳播,並且防護不會做出反應。
這就是我的流浪共享文件夾的樣子(很平常的東西)
local_config.vm.share_folder "app", "/var/www/app/current", "../app"
我什至嘗試過使用 NFS 共享 (
:nfs => true
) 但它沒有幫助。有沒有辦法讓文件更改事件從主機傳播到虛擬機?或者這是 Vagrant/VirtualBox 性質的東西?
更新:
經過更多的嘗試,我安裝了ZenTest gem,它包含自動測試工具,允許類似的文件更改事件功能。
在虛擬機中執行自動測試並從我的主機更改文件時,這些更改會傳播並自動測試反應。
基於此,文件更改事件傳播似乎是一個守衛問題,而不是 vagrant 或 virtual box。
不過,我還沒有研究過保護和自動測試之間的實現差異。
**現在我知道可以從虛擬機中的主機擷取文件更改事件。有沒有人知道如何使用警衛來實現這一目標?**我更喜歡guard,因為它的DSL和通用可用性。
根本原因是VirtualBox沒有將主機上的文件更改事件級聯到VM。Guard(在 Linux 上)期望通過 inotify 事件接收通知。相反,您可以使用 對事件進行保護輪詢
guard -p
,但這可能會導致您的 CPU 最大化,因此您可以使用 來限制輪詢guard -p -l 10
。來自
guard help start
:-l, [--latency=Overwrite Listen's default latency] -p, [--force-polling=Force usage of the Listen polling listener]
http://www.softr.li/blog/2012/07/21/running-guard-over-vagrant