From 0e85d0d282cdd99f54f91b84f44d059bb6225069 Mon Sep 17 00:00:00 2001 From: schneems Date: Thu, 21 Jul 2016 14:26:35 -0500 Subject: [PATCH] [close #381] Avoid Sprockets deprecations - Use both `register_engine` and `register_transformer` in railtie.rb. - In the test postprocessor use an object that responds to `call` and `new.render`. --- .travis.yml | 1 + lib/sass/rails/railtie.rb | 13 ++++++++-- .../engine_project/engine_project.gemspec | 2 +- .../config/initializers/postprocessor.rb | 26 ++++++++++++++++--- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4b2d1a6..53a703a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,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/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 2e9a82f..319d9f3 100644 --- a/test/fixtures/engine_project/engine_project.gemspec +++ b/test/fixtures/engine_project/engine_project.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.version = EngineProject::VERSION s.authors = ["Your name"] s.email = ["Your email"] - s.homepage = "http://example.com" + s.homepage = "" s.summary = "Summary of EngineProject." s.description = "Description of EngineProject." 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