From 4ffa08cc429056b68223b437f09ff6c624b3410e Mon Sep 17 00:00:00 2001 From: Jacques Crocker Date: Tue, 7 Jul 2009 22:47:27 -0700 Subject: [PATCH] Fixing Merb Integration (use Merb::Plugins.config instead of Merb::Config) --- Rakefile | 2 + lib/compass/app_integration/merb.rb | 73 +++++++++++++++++------------ 2 files changed, 46 insertions(+), 29 deletions(-) diff --git a/Rakefile b/Rakefile index ac940261..4f080678 100644 --- a/Rakefile +++ b/Rakefile @@ -89,6 +89,8 @@ end task :release => :commit_revision +task :gem => :build + desc "Compile Examples into HTML and CSS" task :examples do linked_haml = "tests/haml" diff --git a/lib/compass/app_integration/merb.rb b/lib/compass/app_integration/merb.rb index b8ff84b0..26cedfe5 100644 --- a/lib/compass/app_integration/merb.rb +++ b/lib/compass/app_integration/merb.rb @@ -1,43 +1,58 @@ # To configure Merb to use compass do the following: -# Merb::BootLoader.after_app_loads do -# require 'merb-haml' -# require 'compass' -# end -# +# +# Add dependencies to config/dependencies.rb +# +# dependency "haml", ">=2.2.0" +# dependency "merb-haml", merb_gems_version +# dependency "chriseppstein-compass", :require_as => 'compass' +# +# # To use a different sass stylesheets locations as is recommended by compass # add this configuration to your configuration block: # -# Merb::Config.use do |c| -# c[:compass] = { -# :stylesheets => 'app/stylesheets', -# :compiled_stylesheets => 'public/stylesheets/compiled' +# Merb::BootLoader.before_app_loads do +# Merb::Plugins.config[:compass] = { +# :stylesheets => "app/stylesheets", +# :compiled_stylesheets => "public/stylesheets/compiled" # } # end +# + +module Compass + def self.setup_template_location + # default the compass configuration if they didn't set it up yet. + Merb::Plugins.config[:compass] ||= {} + + # default sass stylesheet location unless configured to something else + Merb::Plugins.config[:compass][:stylesheets] ||= Merb.dir_for(:stylesheet) / "sass" + + # default sass css location unless configured to something else + Merb::Plugins.config[:compass][:compiled_stylesheets] ||= Merb.dir_for(:stylesheet) + + #define the template hash for the project stylesheets as well as the framework stylesheets. + template_location = { + Merb::Plugins.config[:compass][:stylesheets] => Merb::Plugins.config[:compass][:compiled_stylesheets] + } + Compass::Frameworks::ALL.each do |framework| + template_location[framework.stylesheets_directory] = Merb::Plugins.config[:compass][:compiled_stylesheets] + end + + #configure Sass to know about all these sass locations. + Sass::Plugin.options[:template_location] = template_location + end +end Merb::BootLoader.after_app_loads do #set up sass if haml load didn't do it -- this happens when using a non-default stylesheet location. unless defined?(Sass::Plugin) require "sass/plugin" - Sass::Plugin.options = Merb::Config[:sass] if Merb::Config[:sass] + if Merb::Plugins.config[:sass] + Sass::Plugin.options = Merb::Plugins.config[:sass] + # support old (deprecatd Merb::Config[:sass] option) + elsif Merb::Config[:sass] + Sass::Plugin.options = Merb::Config[:sass] + end end - # default the compass configuration if they didn't set it up yet. - Merb::Config[:compass] ||= {} - - # default sass stylesheet location unless configured to something else - Merb::Config[:compass][:stylesheets] ||= Merb.dir_for(:stylesheet) / "sass" - - # default sass css location unless configured to something else - Merb::Config[:compass][:compiled_stylesheets] ||= Merb.dir_for(:stylesheet) - - #define the template hash for the project stylesheets as well as the framework stylesheets. - template_location = { - Merb::Config[:compass][:stylesheets] => Merb::Config[:compass][:compiled_stylesheets] - } - Compass::Frameworks::ALL.each do |framework| - template_location[framework.stylesheets_directory] = Merb::Config[:compass][:compiled_stylesheets] - end - - #configure Sass to know about all these sass locations. - Sass::Plugin.options[:template_location] = template_location + Compass.setup_template_location end