diff --git a/middleman-core/lib/middleman-core/preview_server.rb b/middleman-core/lib/middleman-core/preview_server.rb index ed4bdb47..434860b3 100644 --- a/middleman-core/lib/middleman-core/preview_server.rb +++ b/middleman-core/lib/middleman-core/preview_server.rb @@ -32,6 +32,8 @@ module Middleman ) mount_instance(app) + + start_file_watcher unless options[:"disable-watcher"] @initialized ||= false unless @initialized @@ -39,7 +41,9 @@ module Middleman register_signal_handlers unless ::Middleman::WINDOWS - start_file_watcher unless options[:"disable-watcher"] + # Save the last-used options so it may be re-used when + # reloading later on. + @last_options = options @webrick.start end @@ -56,7 +60,7 @@ module Middleman # @return [void] def reload stop - start + start @last_options end # Stop the current instance, exit Webrick @@ -79,7 +83,10 @@ module Middleman if added_and_modified.length > 0 # See if the changed file is config.rb or lib/*.rb - return reload if needs_to_reload?(added_and_modified) + if needs_to_reload?(added_and_modified) + reload + return listener.stop + end # Otherwise forward to Middleman added_and_modified.each do |path| @@ -89,7 +96,10 @@ module Middleman if removed.length > 0 # See if the changed file is config.rb or lib/*.rb - return reload if needs_to_reload?(removed) + if needs_to_reload?(removed) + reload + return listener.stop + end # Otherwise forward to Middleman removed.each do |path|