Fixing Merb Integration (use Merb::Plugins.config instead of Merb::Config)

This commit is contained in:
Jacques Crocker 2009-07-07 22:47:27 -07:00 committed by Chris Eppstein
parent 3681187e6c
commit 4ffa08cc42
2 changed files with 46 additions and 29 deletions

View File

@ -89,6 +89,8 @@ end
task :release => :commit_revision task :release => :commit_revision
task :gem => :build
desc "Compile Examples into HTML and CSS" desc "Compile Examples into HTML and CSS"
task :examples do task :examples do
linked_haml = "tests/haml" linked_haml = "tests/haml"

View File

@ -1,43 +1,58 @@
# To configure Merb to use compass do the following: # To configure Merb to use compass do the following:
# Merb::BootLoader.after_app_loads do #
# require 'merb-haml' # Add dependencies to config/dependencies.rb
# require 'compass' #
# end # 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 # To use a different sass stylesheets locations as is recommended by compass
# add this configuration to your configuration block: # add this configuration to your configuration block:
# #
# Merb::Config.use do |c| # Merb::BootLoader.before_app_loads do
# c[:compass] = { # Merb::Plugins.config[:compass] = {
# :stylesheets => 'app/stylesheets', # :stylesheets => "app/stylesheets",
# :compiled_stylesheets => 'public/stylesheets/compiled' # :compiled_stylesheets => "public/stylesheets/compiled"
# } # }
# end # 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 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. #set up sass if haml load didn't do it -- this happens when using a non-default stylesheet location.
unless defined?(Sass::Plugin) unless defined?(Sass::Plugin)
require "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 end
# default the compass configuration if they didn't set it up yet. Compass.setup_template_location
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
end end