diff --git a/lib/jekyll/watcher.rb b/lib/jekyll/watcher.rb index 3b1fe1b..b54aa2d 100644 --- a/lib/jekyll/watcher.rb +++ b/lib/jekyll/watcher.rb @@ -26,6 +26,10 @@ def watch(options, site = nil) listener.start Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'" + if options["livereload_sleep"] + Jekyll.logger.info "LiveReload:", "auto-regeneration delayed "\ + "#{options["livereload_sleep"]} second(s)" + end unless options["serving"] trap("INT") do @@ -44,8 +48,9 @@ def watch(options, site = nil) def build_listener(site, options) Listen.to( options["source"], - :ignore => listen_ignore_paths(options), - :force_polling => options["force_polling"], + :ignore => listen_ignore_paths(options), + :force_polling => options["force_polling"], + :wait_for_delay => options["livereload_sleep"], &listen_handler(site) ) end diff --git a/spec/watcher_spec.rb b/spec/watcher_spec.rb index 31e290f..2dccc9b 100644 --- a/spec/watcher_spec.rb +++ b/spec/watcher_spec.rb @@ -26,7 +26,8 @@ let(:listener) { instance_double(Listen::Listener) } let(:opts) do - { :ignore => default_ignored, :force_polling => options["force_polling"] } + { :ignore => default_ignored, :force_polling => options["force_polling"], + :wait_for_delay => options["livereload_sleep"], } end before do @@ -62,6 +63,12 @@ .with(anything, hash_including(:force_polling => nil)) end + it "defaults to no livereload_sleep" do + expect(Listen) + .to have_received(:to) + .with(anything, hash_including(:wait_for_delay => nil)) + end + context "with force_polling turned on" do let(:options) { base_opts.merge("force_polling" => true) } @@ -76,7 +83,9 @@ describe "#watch using site instance" do let(:listener) { instance_double(Listen::Listener) } - let(:opts) { { :ignore => default_ignored, :force_polling => nil } } + let(:opts) do + { :ignore => default_ignored, :force_polling => nil, :wait_for_delay => nil } + end before do allow(Listen)