diff --git a/middleman-core/lib/middleman-core/sources.rb b/middleman-core/lib/middleman-core/sources.rb index d30f0124..f0d3cc91 100644 --- a/middleman-core/lib/middleman-core/sources.rb +++ b/middleman-core/lib/middleman-core/sources.rb @@ -116,7 +116,8 @@ module Middleman Contract Or[Symbol, HANDLER], Maybe[Hash] => HANDLER def watch(type_or_handler, options={}) handler = if type_or_handler.is_a? Symbol - SourceWatcher.new(self, type_or_handler, options.delete(:path), options) + path = File.expand_path(options.delete(:path), app.root) + SourceWatcher.new(self, type_or_handler, path, options) else type_or_handler end diff --git a/middleman-core/lib/middleman-core/sources/source_watcher.rb b/middleman-core/lib/middleman-core/sources/source_watcher.rb index cbcf1fae..21d6d7b2 100644 --- a/middleman-core/lib/middleman-core/sources/source_watcher.rb +++ b/middleman-core/lib/middleman-core/sources/source_watcher.rb @@ -92,7 +92,7 @@ module Middleman # @return [void] Contract String => Any def update_path(directory) - @directory = Pathname(directory) + @directory = Pathname(File.expand_path(directory, app.root)) stop_listener! if @listener @@ -133,6 +133,7 @@ module Middleman return nil if p.absolute? && !p.to_s.start_with?(@directory.to_s) p = @directory + p if p.relative? + if glob @extensionless_files[p] else