Vagrant paylaşılan klasör ve dosya değiştirme olayları


15

Vagrant üzerinden eriştiğim ubuntu sanal makinem var. Ana bilgisayarımda (Mac OSX), sanal makinede paylaştığım birkaç dosya içeren bir klasör var. Bu sanal makinede, dosya değişikliklerini izlemek ve bu dosyalardan herhangi biri değişirse bazı eylemler gerçekleştirmek için guard kullanmak istiyorum .

Korumayı düzgün bir şekilde ayarladım ve paylaşılan dosyayı sanal makineden değiştirirken tamam çalışıyor ve uygun komut dosyalarını çalıştırıyor. Ancak, paylaşılan dosyayı ana bilgisayarımdan değiştirmeye çalışırsam, bu dosya değişikliği olayı yayılmaz ve koruma tepki vermez.

Benim vagrant paylaşılan klasörüm böyle görünüyor (oldukça olağan şeyler)

local_config.vm.share_folder "app", "/var/www/app/current", "../app"

Hatta NFS paylaşımını ( :nfs => true) kullanmayı denedim ama yardımcı olmadı.

Dosya değişiklikleri olaylarını ana bilgisayardan sanal makineye geçirmenin herhangi bir yolu var mı? Yoksa bu Vagrant / VirtualBox doğası mı?

GÜNCELLEME:

Birkaç denemeden sonra, dosya değiştirme olaylarıyla ilgili benzer işlevlere izin veren otomatik test aracı içeren ZenTest gem'i kurdum .

Sanal makinede otomatik test çalıştırırken ve ana makinemdeki dosyaları değiştirirken, bu değişiklikler yayılır ve otomatik test tepki verir .

Buna dayanarak, dosya değişikliği olayı yayılmasının vagrant veya sanal kutu değil, bir koruma sorunu olduğu görülmektedir.

Yine de koruma ve otomatik test arasındaki uygulama farklılıklarına bakmadım.

Artık sanal makinede ana bilgisayardan dosya değiştirme olaylarını yakalamanın mümkün olduğunu biliyorum. Muhafızı kullanarak bunu nasıl başaracağına dair bir fikri olan var mı? DSL ve genel kullanılabilirliği nedeniyle korumayı daha çok seviyorum.

Yanıtlar:


11

Bunun temel nedeni, VirtualBox'ın ana bilgisayardaki dosya değişikliği olaylarını VM'ye basamamasıdır. Guard (Linux'ta) inotify olayları yoluyla bildirim almayı bekliyor. Bunun yerine, olaylar için koruma anketine sahip olabilirsiniz guard -p, ancak bu CPU'nuzun maksimize edilmesine neden olabilir, böylece yoklamayı geri çekebilirsiniz guard -p -l 10.

Gönderen 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


Teşekkürler Gabe, bir süre önce bekçi için bekçiyi bıraktım. Yine de cevabınız anlama açısından değerlidir.
rdamborsky

4

Bunun daha eski bir soru olduğunu biliyorum, ama işte daha güncel bir cevap:

Koruma -o/--listen-onseçeneği belgeleri

Hızlı başvuru için buraya yapıştırıldı:

-o/--listen-on option

Use Listen's network functionality to receive file change events from the
network. This is most useful for virtual machines (e.g. Vagrant) which have
problems firing native filesystem events on the guest OS.

Suggested use:

On the host OS, you need to listen to filesystem events and forward them to
your VM using the listen script:

    $ listen -f 127.0.0.1:4000

Remember to configure your VM to forward the appropriate ports, e.g.
in Vagrantfile:

    config.vm.network :forwarded_port, guest: 4000, host: 4000

Then, on your guest OS, listen to the network events but ensure you
specify the host path:

    $ bundle exec guard -o '10.0.2.2:4000' -w '/projects/myproject'

1

Birisi bu sorunla karşılaşırsa ve bekçi hala çalışmıyorsa ...

Ben watchr kullanarak sona erdi . Muhafızlara bir alternatif. Ana makineden misafir makineye olayların yayılımı watchr. Ayrıca otomatik testten daha esnektir.


Events propagation from host to guest machine works ok in watchr.Nasıl? Yoklama kullanıyor mu? VirtualBox olayları yaymıyorsa, bir dosyanın ne zaman değiştiğini nasıl bilebilir?
Nateowami
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.