ভ্যাগ্র্যান্ট ভাগ করা ফোল্ডার এবং ফাইল পরিবর্তন ইভেন্ট


15

আমার উবুন্টু ভার্চুয়াল মেশিন রয়েছে যা আমি ভ্যাগ্র্যান্টের মাধ্যমে অ্যাক্সেস করছি। আমার হোস্টে (ম্যাক ওএসএক্স), বেশ কয়েকটি ফাইল সহ একটি ফোল্ডার রয়েছে, যা আমি ভার্চুয়াল মেশিনে ভাগ করি। সেই ভার্চুয়াল মেশিনে, আমি ফাইলগুলির পরিবর্তনগুলি দেখার জন্য গার্ডটি ব্যবহার করতে চাই এবং সেই ফাইলগুলির মধ্যে কোনওরকম পরিবর্তন হলে কিছু পদক্ষেপ নিতে চাই।

আমি সঠিকভাবে গার্ড সেট আপ করেছি, এবং ভার্চুয়াল মেশিনের থেকে ভাগ করা ফাইলটি পরিবর্তন করার সময়, এটি ঠিক কাজ করে এবং উপযুক্ত স্ক্রিপ্টগুলি চালায়। তবে, আমি যদি আমার হোস্ট মেশিন থেকে ভাগ করা ফাইলটি পরিবর্তন করার চেষ্টা করি, এই ফাইল পরিবর্তন ইভেন্টটি প্রচার করে না এবং প্রহরী কোনও প্রতিক্রিয়া দেখায় না।

আমার যোজনাগুলি ভাগ করা ফোল্ডারটি এ রকম দেখাচ্ছে (বেশ স্বাভাবিক জিনিস)

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

এমনকি আমি এনএফএস ভাগ করে নেওয়ার চেষ্টা করেছি ( :nfs => true) তবে তাতে কোনও লাভ হয়নি।

হোস্ট থেকে ভার্চুয়াল মেশিনে ফাইল পরিবর্তন ইভেন্টগুলি প্রচার করার কোনও উপায় আছে কি? না এটি ভ্যাগ্র্যান্ট / ভার্চুয়ালবক্স প্রকৃতির কিছু?

হালনাগাদ:

আরও কিছু পরীক্ষার পরে, আমি জেনটেষ্ট মণি ইনস্টল করেছি , এতে ফাইল পরিবর্তন ইভেন্ট সম্পর্কিত অনুরূপ কার্যকারিতা মঞ্জুর করে অটোটেস্ট সরঞ্জাম রয়েছে।

ভার্চুয়াল মেশিনে অটোটেষ্ট চালানো এবং আমার হোস্ট মেশিন থেকে ফাইলগুলি পরিবর্তন করার সময়, এই পরিবর্তনগুলি প্রচারিত হয় এবং অটোস্টেস্ট প্রতিক্রিয়াগুলি

এর উপর ভিত্তি করে, দেখে মনে হচ্ছে যে ফাইল পরিবর্তন ইভেন্টের প্রচারটি কোনও প্রহরী বা ভার্চুয়াল বাক্স নয়, রক্ষার সমস্যা।

যদিও আমি গার্ড এবং অটোস্টেস্টের মধ্যে বাস্তবায়নের পার্থক্যগুলি সন্ধান করি না।

এখন আমি জানি ভার্চুয়াল মেশিনে হোস্ট থেকে ফাইল পরিবর্তন ইভেন্টগুলি ধরা সম্ভব। গার্ড ব্যবহার করে কীভাবে এটি অর্জন করবেন সে সম্পর্কে কারও কি ধারণা আছে? আমি এর ডিএসএল এবং জেনেরিক ব্যবহারের কারণে গার্ড বেশি পছন্দ করি।

উত্তর:


11

এর মূল কারণটি হ'ল ভার্চুয়ালবক্স হোস্টের ফাইল পরিবর্তন ইভেন্টগুলি ভিএম-তে ক্যাসকেড করে না। গার্ড (লিনাক্সে) ইনোটিফাই ইভেন্টগুলির মাধ্যমে বিজ্ঞপ্তিগুলি পাওয়ার প্রত্যাশা করে। পরিবর্তে, আপনি ইভেন্টগুলির জন্য গার্ড পোল রাখতে পারেন guard -p, তবে এটি আপনার সিপিইউকে সর্বাধিক বাড়িয়ে তুলতে পারে, যাতে আপনি পোলিংটি পিছনে দিয়ে থ্রোট করতে পারেন 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


থ্যাঙ্কস গ্যাবে, কিছুক্ষণ আগে আমি প্রহরীকে রক্ষা করেছি। তবুও, আপনার উত্তরটি বোঝার জন্য মূল্যবান।
rdamborsky

4

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে এখানে আরও একটি আপ-টু ডেট উত্তর রয়েছে:

গার্ড -o/--listen-onবিকল্প ডকুমেন্টেশন

দ্রুত রেফারেন্সের জন্য এখানে আটকানো হয়েছে:

-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

যদি কেউ এই ইস্যুটি চালায় এবং প্রহরী এখনও কাজ না করে ...

আমি প্রহরী ব্যবহার করে শেষ । এটি পাহারার বিকল্প is হোস্ট থেকে অতিথি মেশিনে ইভেন্টের প্রচার প্রহরীতে ঠিক কাজ করে। এটি অটোস্টেস্টের চেয়ে আরও নমনীয়।


Events propagation from host to guest machine works ok in watchr.কিভাবে? এটি কি পোলিং ব্যবহার করে? ভার্চুয়ালবক্স যদি ইভেন্টগুলি প্রচার না করে থাকে তবে ফাইলটি পরিবর্তন হয়ে গেলে এটি কীভাবে জানতে পারে?
নাটোয়ামি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.