Merge branch 'v3-stable'

Conflicts:
	.travis.yml
	Gemfile
	middleman-cli/lib/middleman-cli/build.rb
	middleman-core/lib/middleman-core/core_extensions/file_watcher.rb
	middleman-core/lib/middleman-core/templates.rb
	middleman-core/lib/middleman-core/util.rb
	middleman-core/middleman-core.gemspec
This commit is contained in:
Ben Hollis 2014-03-25 22:35:19 -07:00
commit 60f712e6ba
6 changed files with 40 additions and 28 deletions

View file

@ -9,6 +9,7 @@ rvm:
- jruby-head - jruby-head
- jruby - jruby
- jruby-19mode - jruby-19mode
- 2.1.1
- 2.1.0 - 2.1.0
- 2.0.0 - 2.0.0
- 1.9.3 - 1.9.3
@ -21,4 +22,4 @@ matrix:
- rvm: jruby-head - rvm: jruby-head
- rvm: jruby - rvm: jruby
- rvm: jruby-19mode - rvm: jruby-19mode
- rvm: rbx-2 - rvm: rbx-2

View file

@ -4,13 +4,13 @@ module Middleman
module FileWatcher module FileWatcher
IGNORE_LIST = [ IGNORE_LIST = [
/^bin\//, /^bin(\/|$)/,
/^\.bundle\//, /^\.bundle(\/|$)/,
/^vendor\//, /^vendor(\/|$)/,
/^\.sass-cache\//,
/^\.cache\//,
/^\.git\//,
/^node_modules(\/|$)/, /^node_modules(\/|$)/,
/^\.sass-cache(\/|$)/,
/^\.cache(\/|$)/,
/^\.git(\/|$)/,
/^\.gitignore$/, /^\.gitignore$/,
/\.DS_Store/, /\.DS_Store/,
/^\.rbenv-.*$/, /^\.rbenv-.*$/,
@ -39,7 +39,7 @@ module Middleman
end end
app.after_configuration do app.after_configuration do
config[:file_watcher_ignore] << %r{^#{config[:build_dir]}\/} config[:file_watcher_ignore] << %r{^#{config[:build_dir]}(\/|$)}
end end
# After config, load everything else # After config, load everything else
@ -99,7 +99,6 @@ module Middleman
# @return [void] # @return [void]
def did_change(path) def did_change(path)
path = Pathname(path) path = Pathname(path)
return if ignored?(path)
logger.debug "== File Change: #{path}" logger.debug "== File Change: #{path}"
@known_paths << path @known_paths << path
self.run_callbacks(path, :changed) self.run_callbacks(path, :changed)
@ -111,7 +110,6 @@ module Middleman
# @return [void] # @return [void]
def did_delete(path) def did_delete(path)
path = Pathname(path) path = Pathname(path)
return if ignored?(path)
logger.debug "== File Deletion: #{path}" logger.debug "== File Deletion: #{path}"
@known_paths.delete(path) @known_paths.delete(path)
self.run_callbacks(path, :deleted) self.run_callbacks(path, :deleted)
@ -131,7 +129,7 @@ module Middleman
glob = (path + '**').to_s glob = (path + '**').to_s
subset = @known_paths.select { |p| p.fnmatch(glob) } subset = @known_paths.select { |p| p.fnmatch(glob) }
::Middleman::Util.all_files_under(path).each do |filepath| ::Middleman::Util.all_files_under(path, &method(:ignored?)).each do |filepath|
next if only_new && subset.include?(filepath) next if only_new && subset.include?(filepath)
subset.delete(filepath) subset.delete(filepath)
@ -156,7 +154,6 @@ module Middleman
@known_paths.include?(p) @known_paths.include?(p)
end end
protected
# Whether this path is ignored # Whether this path is ignored
# @param [Pathname] path # @param [Pathname] path
# @return [Boolean] # @return [Boolean]
@ -165,6 +162,8 @@ module Middleman
app.config[:file_watcher_ignore].any? { |r| path =~ r } app.config[:file_watcher_ignore].any? { |r| path =~ r }
end end
protected
# Notify callbacks for a file given an array of callbacks # Notify callbacks for a file given an array of callbacks
# #
# @param [Pathname] path The file that was changed # @param [Pathname] path The file that was changed

View file

@ -41,6 +41,7 @@ class Middleman::Extensions::AssetHash < ::Middleman::Extension
def manipulate_single_resource(resource) def manipulate_single_resource(resource)
return unless options.exts.include?(resource.ext) return unless options.exts.include?(resource.ext)
return if ignored_resource?(resource) return if ignored_resource?(resource)
return if resource.ignored?
# Render through the Rack interface so middleware and mounted apps get a shot # Render through the Rack interface so middleware and mounted apps get a shot
response = @rack_client.get(URI.escape(resource.destination_path), { 'bypass_asset_hash' => 'true' }) response = @rack_client.get(URI.escape(resource.destination_path), { 'bypass_asset_hash' => 'true' })

View file

@ -133,10 +133,12 @@ module Middleman
@webrick.stop @webrick.stop
else else
added_and_modified.each do |path| added_and_modified.each do |path|
next if app.files.ignored?(path)
app.files.did_change(path) app.files.did_change(path)
end end
removed.each do |path| removed.each do |path|
next if app.files.ignored?(path)
app.files.did_delete(path) app.files.did_delete(path)
end end
end end

View file

@ -28,7 +28,7 @@ module Middleman
return false if Tilt.registered?(ext.sub('.', '')) return false if Tilt.registered?(ext.sub('.', ''))
dot_ext = (ext.to_s[0] == ?.) ? ext.dup : ".#{ext}" dot_ext = (ext.to_s[0] == ?.) ? ext.dup : ".#{ext}"
if mime = ::Rack::Mime.mime_type(dot_ext, nil) if mime = ::Rack::Mime.mime_type(dot_ext, nil)
!nonbinary_mime?(mime) !nonbinary_mime?(mime)
else else
@ -113,21 +113,27 @@ module Middleman
end end
end end
# Get a recursive list of files inside a set of paths. # Get a recusive list of files inside a path.
# Works with symlinks. # Works with symlinks.
# #
# @param paths Some paths string or Pathname # @param path Some path string or Pathname
# @return [Array] An array of filenames # @param ignore A proc/block that returns true if a given path should be ignored - if a path
def all_files_under(*paths) # is ignored, nothing below it will be searched either.
paths.flat_map do |p| # @return [Array<Pathname>] An array of Pathnames for each file (no directories)
path = Pathname(p) def all_files_under(path, &ignore)
path = Pathname(path)
if path.directory? return [] if ignore && ignore.call(path)
all_files_under(*path.children)
elsif path.file? if path.directory?
path path.children.flat_map do |child|
end all_files_under(child, &ignore)
end.compact end.compact
elsif path.file?
[path]
else
[]
end
end end
# Given a source path (referenced either absolutely or relatively) # Given a source path (referenced either absolutely or relatively)
@ -248,7 +254,7 @@ module Middleman
s.each_byte do |c| s.each_byte do |c|
return true if binary_bytes.include?(c) return true if binary_bytes.include?(c)
end end
false false
end end
@ -277,7 +283,7 @@ module Middleman
end end
end end
end end
# A hash with indifferent access and magic predicates. # A hash with indifferent access and magic predicates.
# Copied from Thor # Copied from Thor
# #

View file

@ -8,4 +8,7 @@ gem "middleman", "~><%= Middleman::VERSION %>"
gem "middleman-livereload", "~> 3.1.0" gem "middleman-livereload", "~> 3.1.0"
# For faster file watcher updates on Windows: # For faster file watcher updates on Windows:
gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw] gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw]
# Windows does not come with time zone data
gem "tzinfo-data", platforms: [:mswin, :mingw]