diff --git a/.travis.yml b/.travis.yml index ebd767e..a008841 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,7 @@ gemfile: - gemfiles/Gemfile-sprockets-2-12 - gemfiles/Gemfile-sprockets-2-8 - gemfiles/Gemfile-sprockets-3-0 + - gemfiles/Gemfile-sprockets-4-0 - gemfiles/Gemfile-sprockets-rails-2-2 - gemfiles/Gemfile-sprockets-rails-master - gemfiles/Gemfile-sass-3-1 diff --git a/gemfiles/Gemfile-sprockets-4-0 b/gemfiles/Gemfile-sprockets-4-0 new file mode 100644 index 0000000..c4b53ee --- /dev/null +++ b/gemfiles/Gemfile-sprockets-4-0 @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +# Specify your gem"s dependencies in sass-rails.gemspec +gemspec path: ".." + +gem "rails" +gem "sprockets", "~> 4.x" diff --git a/lib/sass/rails/railtie.rb b/lib/sass/rails/railtie.rb index eed4749..fb63c2b 100644 --- a/lib/sass/rails/railtie.rb +++ b/lib/sass/rails/railtie.rb @@ -54,8 +54,17 @@ class Railtie < ::Rails::Railtie end config.assets.configure do |env| - env.register_engine '.sass', Sass::Rails::SassTemplate - env.register_engine '.scss', Sass::Rails::ScssTemplate + if env.respond_to?(:register_engine) + env.register_engine '.sass', Sass::Rails::SassTemplate, silence_deprecation: true + env.register_engine '.scss', Sass::Rails::ScssTemplate, silence_deprecation: true + end + + if env.respond_to?(:register_transformer) + env.register_transformer 'text/sass', 'text/css', + Sprockets::SassProcessor.new(importer: SassImporter, sass_config: app.config.sass) + env.register_transformer 'text/scss', 'text/css', + Sprockets::ScssProcessor.new(importer: SassImporter, sass_config: app.config.sass) + end env.context_class.class_eval do class_attribute :sass_config diff --git a/test/fixtures/engine_project/engine_project.gemspec b/test/fixtures/engine_project/engine_project.gemspec index 3098f51..290d52d 100644 --- a/test/fixtures/engine_project/engine_project.gemspec +++ b/test/fixtures/engine_project/engine_project.gemspec @@ -7,11 +7,11 @@ require "engine_project/version" Gem::Specification.new do |s| s.name = "engine_project" s.version = EngineProject::VERSION - s.authors = ["TODO: Your name"] - s.email = ["TODO: Your email"] - s.homepage = "TODO" - s.summary = "TODO: Summary of EngineProject." - s.description = "TODO: Description of EngineProject." + s.authors = ["Your name"] + s.email = ["Your email"] + s.homepage = "" + s.summary = "Summary of EngineProject." + s.description = "Description of EngineProject." s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"] s.test_files = Dir["test/**/*"] diff --git a/test/fixtures/scss_project/config/initializers/postprocessor.rb b/test/fixtures/scss_project/config/initializers/postprocessor.rb index 37c4189..83952e7 100644 --- a/test/fixtures/scss_project/config/initializers/postprocessor.rb +++ b/test/fixtures/scss_project/config/initializers/postprocessor.rb @@ -1,5 +1,25 @@ -Rails.application.config.assets.configure do |env| - env.register_postprocessor 'text/css', :postprocessor do |context, css| - css.gsub /@import/, 'fail engine' + +class SassRailsTestPostProcessor + def initialize(filename, &block) + @filename = filename + @source = block.call + end + + def render(context) + self.class.run(@source) + end + + def self.run(source) + source.gsub /@import/, 'fail engine' end + + def self.call(input) + source = input[:data] + result = run(source) + { data: result } + end +end + +Rails.application.config.assets.configure do |env| + env.register_postprocessor 'text/css', SassRailsTestPostProcessor end