diff --git a/lib/middleman/base.rb b/lib/middleman/base.rb index 50419d5b..a9416a9f 100644 --- a/lib/middleman/base.rb +++ b/lib/middleman/base.rb @@ -34,7 +34,7 @@ module Middleman end @@afters = [] - def self.after(&block) + def self.after_feature_init(&block) @@afters << block end diff --git a/lib/middleman/features/cache_buster.rb b/lib/middleman/features/cache_buster.rb index c43b9d6a..87bddc61 100644 --- a/lib/middleman/features/cache_buster.rb +++ b/lib/middleman/features/cache_buster.rb @@ -1,3 +1,22 @@ +class Middleman::Base + include Middleman::Sass + + after_feature_init do + ::Compass.configuration do |config| + config.asset_cache_buster do |path, real_path| + # real_path = real_path.gsub(self.build_dir, self.public) + if File.readable?(real_path) + File.mtime(real_path).strftime("%s") + else + $stderr.puts "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}" + end + end + end + + ::Compass.configure_sass_plugin! + end +end + class << Middleman::Base alias_method :pre_cache_buster_asset_url, :asset_url def asset_url(path, prefix="", request=nil) diff --git a/lib/middleman/sass.rb b/lib/middleman/sass.rb index 70a22a00..72a4a2ed 100644 --- a/lib/middleman/sass.rb +++ b/lib/middleman/sass.rb @@ -68,39 +68,24 @@ end class Middleman::Base include Middleman::Sass - after do + after_feature_init do ::Compass.configuration do |config| - config.project_path = self.root - config.sass_dir = File.join(File.basename(self.views), self.css_dir) - config.output_style = :nested - config.css_dir = File.join(File.basename(self.public), self.css_dir) - config.images_dir = File.join(File.basename(self.public), self.images_dir) - - config.add_import_path(config.sass_dir) - + config.project_path = self.root + config.sass_dir = File.join(File.basename(self.views), self.css_dir) + config.output_style = :nested + config.css_dir = File.join(File.basename(self.public), self.css_dir) + config.images_dir = File.join(File.basename(self.public), self.images_dir) config.http_images_path = self.http_images_path rescue File.join(self.http_prefix, self.images_dir) config.http_stylesheets_path = self.http_css_path rescue File.join(self.http_prefix, self.css_dir) - - if self.cache_buster? - config.asset_cache_buster do |path, real_path| - # real_path = real_path.gsub(self.build_dir, self.public) - if File.readable?(real_path) - File.mtime(real_path).strftime("%s") - else - $stderr.puts "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}" - end - end - else - config.asset_cache_buster do - false - end - end + config.asset_cache_buster { false } + + config.add_import_path(config.sass_dir) end configure :build do ::Compass.configuration do |config| - config.css_dir = File.join(File.basename(self.build_dir), self.css_dir) - config.images_dir = File.join(File.basename(self.build_dir), self.images_dir) + config.css_dir = File.join(File.basename(self.build_dir), self.css_dir) + config.images_dir = File.join(File.basename(self.build_dir), self.images_dir) end end