Filesystems

Vagrant 共享文件夾和文件更改事件

  • November 12, 2014

我有通過 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

引用自:https://serverfault.com/questions/453826