Compass is great, but sometimes we need to have common framework code in one (global) location with local overrides in the app.
This addition adds built-in support for loading SASS/SCSS files from multiple locations external to the "source" directory and even the Middleman app root.
Example usage:
# in config.rb
set :sass_assets_path, [ "#{root}/assets/sass/", "~/.sass-repo/"]
Using symlinks or copying files to the Middleman project can get messy quickly. This fix reduces some of those issues.
The default output of SASS .sass_cache directory is in the Middleman app root directory, which to my mind adds clutter to the directory.
Secondly, when storing Middleman apps in a Dropbox subfolder, the .sass_cache directory gets synced unnecessarily.
This fix enables moving the .sass_cache directory to any path on the system, such as the "/tmp" directory for automatic discarding of files when restarting the system.
Suggested usage:
#in config.rb
set :sass_cache_path, File.join('/tmp', "middleman-#{File.basename(Dir.pwd)}", "sass_cache")
which could return something like:
`/tmp/middleman-example.com/sass_cache`
This keeps multiple projects separated and easily identifiable.
This allows extensions, templates and monkey-patches to chdir
when needed, without triggering this ruby warning:
warning: conflicting chdir during another chdir block
"set :trailing_slash, false" will cause resource urls that match the
index_file to have the trailing slash stripped off the directory URL,
e.g. instead of "/dir/index.html" becoming "/dir/" it will be "/dir"
Trying to call Resource#metadata from within
MyExtension#manipulate_resource_list generates an exception in
Proxies::ResourceInstanceMethods#get_source_file because @_lookup_cache
is empty. Moving the recalculation inside the loop means regenerating
the cache after each manipulation but allows extensions to examine the
page metadata when manipulating proxied resources.
The fix is to work around this bug: http://bugs.ruby-lang.org/issues/4521 where Ruby will call to_s/inspect while printing exception messages, which can take a long time (minutes at full CPU) if the object is huge or has cyclic references, like Middleman::Application does. Defining #to_s short-circuits that. This fixes#370.