added support for images in compass

This commit is contained in:
Scott Davis 2012-03-12 23:03:16 -04:00
parent f0dd789e86
commit edddebd4f1
2 changed files with 40 additions and 1 deletions

View File

@ -0,0 +1,21 @@
module Compass::RailsImageFunctionPatch
private
def image_path_for_size(image_file)
begin
file = ::Attentive::Server.sprockets_env.find_asset(image_file)
return file
rescue ::Sprockets::FileOutsidePaths
return super(image_file)
end
end
end
module Sass::Script::Functions
include Compass::RailsImageFunctionPatch
end
# Wierd that this has to be re-included to pick up sub-modules. Ruby bug?
class Sass::Script::Functions::EvaluationContext
include Sass::Script::Functions
end

View File

@ -2,6 +2,7 @@ require 'sprockets'
require 'sprockets-vendor_gems' require 'sprockets-vendor_gems'
require 'sprockets-sass' require 'sprockets-sass'
require 'compass' require 'compass'
require 'attentive/compass_patches'
require 'sinatra' require 'sinatra'
require 'nokogiri' require 'nokogiri'
require 'rdiscount' require 'rdiscount'
@ -13,7 +14,23 @@ require 'rack/builder'
require 'forwardable' require 'forwardable'
module Attentive module Attentive
module Helpers
def image_path(path, options)
if resolve(path, options)
return "/assets/#{path}"
end
nil
end
end
class Server < Rack::Builder class Server < Rack::Builder
def self.sprockets_env
@sprockets_env ||= Sprockets::EnvironmentWithVendoredGems.new
end
def self.start(options) def self.start(options)
require 'rack' require 'rack'
require 'pygments' require 'pygments'
@ -31,12 +48,13 @@ module Attentive
def self.call(env) def self.call(env)
@app ||= Rack::Builder.new do @app ||= Rack::Builder.new do
map '/assets' do map '/assets' do
env = Sprockets::EnvironmentWithVendoredGems.new env = ::Attentive::Server.sprockets_env
env.append_path 'assets/javascripts' env.append_path 'assets/javascripts'
env.append_path 'assets/stylesheets' env.append_path 'assets/stylesheets'
env.append_path 'assets/images' env.append_path 'assets/images'
env.append_path Attentive.root.join('lib/assets/javascripts') env.append_path Attentive.root.join('lib/assets/javascripts')
env.append_path Attentive.root.join('lib/assets/stylesheets') env.append_path Attentive.root.join('lib/assets/stylesheets')
env.context_class.send(:include, ::Attentive::Helpers)
run env run env
end end