close #90 + close #89 (use sprockets) + close #87, #86 (new version of the mounter)
did
committed Jul 07, 2013
commit b27a89831b2168c40bed2ec907ce9f9e0860f0a6
Showing 4
changed files with
26 additions
and 15 deletions
Gemfile
+1
-1
| @@ | @@ -4,6 +4,6 @@ source 'https://rubygems.org' |
| gemspec | |
| # Development | |
| - | gem 'locomotivecms_mounter', path: '../gems/mounter', require: false |
| + | # gem 'locomotivecms_mounter', path: '../gems/mounter', require: false |
| gem 'rb-fsevent', '~> 0.9.1' | |
| \ No newline at end of file | |
locomotive/wagon/server.rb b/lib/locomotive/wagon/server.rb
+3
-1
| @@ | @@ -1,5 +1,7 @@ |
| require 'better_errors' | |
| require 'coffee_script' | |
| + | require 'sprockets' |
| + | require "sprockets-sass" |
| require 'locomotive/wagon/listen' | |
| require 'locomotive/wagon/server/middleware' | |
| @@ | @@ -58,7 +60,7 @@ module Locomotive::Wagon |
| } | |
| use Favicon | |
| - | use DynamicAssets |
| + | use DynamicAssets, reader.mounting_point.path |
| use Logging | |
locomotive/wagon/server/dynamic_assets.rb b/lib/locomotive/wagon/server/dynamic_assets.rb
+19
-12
| @@ | @@ -3,22 +3,29 @@ module Locomotive::Wagon |
| class DynamicAssets < Middleware | |
| - | def call(env) |
| - | self.set_accessors(env) |
| + | attr_reader :app, :sprockets, :regexp |
| - | path = env['PATH_INFO'] |
| + | def initialize(app, root) |
| + | super(app) |
| - | if path =~ /^\/(stylesheets|javascripts)\// |
| + | @regexp = /^\/(javascripts|stylesheets)\/(.*)$/ |
| - | mime_type = MIME::Types.type_for(path).first.try(:to_s) || 'text/plain' |
| - | asset = self.mounting_point.theme_assets.detect do |_asset| |
| - | _asset.path == path |
| - | end |
| + | # make sure Compass is correctly configured |
| + | Locomotive::Mounter::Extensions::Compass.configure(root) |
| + | |
| + | @sprockets = Sprockets::Environment.new |
| + | @sprockets.append_path File.join(root, 'public/stylesheets') |
| + | @sprockets.append_path File.join(root, 'public/javascripts') |
| + | end |
| + | |
| + | def call(env) |
| + | if env['PATH_INFO'] =~ self.regexp |
| + | env['PATH_INFO'] = $2 |
| - | if asset |
| - | [200, { 'Content-Type' => mime_type }, [asset.content!]] |
| - | else |
| - | [404, { 'Content-Type' => mime_type }, ['Asset not found']] |
| + | begin |
| + | self.sprockets.call(env) |
| + | rescue Exception => e |
| + | raise Locomotive::Wagon::DefaultException.new "Unable to serve a dynamic asset. Please check the logs.", e |
| end | |
| else | |
| app.call(env) | |
locomotivecms_wagon.gemspec
+3
-1
| @@ | @@ -24,6 +24,8 @@ Gem::Specification.new do |gem| |
| gem.add_dependency 'locomotive_liquid', '~> 2.4.1' | |
| gem.add_dependency 'RedCloth', '~> 4.2.9' | |
| gem.add_dependency 'dragonfly', '~> 0.9.12' | |
| + | gem.add_dependency 'sprockets', '~> 2.0' |
| + | gem.add_dependency 'sprockets-sass', '~> 1.0.1' |
| gem.add_dependency 'rack-cache', '~> 1.1' | |
| gem.add_dependency 'better_errors', '~> 0.7.2' | |
| @@ | @@ -31,7 +33,7 @@ Gem::Specification.new do |gem| |
| gem.add_dependency 'httmultiparty', '0.3.8' | |
| gem.add_dependency 'will_paginate', '~> 3.0.3' | |
| - | # gem.add_dependency 'locomotivecms_mounter', '~> 1.1.0' |
| + | gem.add_dependency 'locomotivecms_mounter', '~> 1.2.0' |
| gem.add_dependency 'faker', '~> 0.9.5' | |