Skip to content

Commit 5f306d3

Browse files
committed
[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`.
1 parent 24a171f commit 5f306d3

File tree

5 files changed

+43
-6
lines changed

5 files changed

+43
-6
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ gemfile:
1717
- gemfiles/Gemfile-sprockets-2-12
1818
- gemfiles/Gemfile-sprockets-2-8
1919
- gemfiles/Gemfile-sprockets-3-0
20+
- gemfiles/Gemfile-sprockets-4-0
2021
- gemfiles/Gemfile-sprockets-rails-2-2
2122
- gemfiles/Gemfile-sprockets-rails-master
2223
- gemfiles/Gemfile-sass-3-1

gemfiles/Gemfile-sprockets-4-0

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
source "https://rubygems.org"
2+
3+
# Specify your gem"s dependencies in sass-rails.gemspec
4+
gemspec path: ".."
5+
6+
gem "rails"
7+
gem "sprockets", "~> 4.x"

lib/sass/rails/railtie.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,17 @@ class Railtie < ::Rails::Railtie
5454
end
5555

5656
config.assets.configure do |env|
57-
env.register_engine '.sass', Sass::Rails::SassTemplate
58-
env.register_engine '.scss', Sass::Rails::ScssTemplate
57+
if env.respond_to?(:register_engine)
58+
env.register_engine '.sass', Sass::Rails::SassTemplate, silence_deprecation: true
59+
env.register_engine '.scss', Sass::Rails::ScssTemplate, silence_deprecation: true
60+
end
61+
62+
if env.respond_to?(:register_transformer)
63+
env.register_transformer 'text/sass', 'text/css',
64+
Sprockets::SassProcessor.new(importer: SassImporter, sass_config: app.config.sass)
65+
env.register_transformer 'text/scss', 'text/css',
66+
Sprockets::ScssProcessor.new(importer: SassImporter, sass_config: app.config.sass)
67+
end
5968

6069
env.context_class.class_eval do
6170
class_attribute :sass_config

test/fixtures/engine_project/engine_project.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
99
s.version = EngineProject::VERSION
1010
s.authors = ["Your name"]
1111
s.email = ["Your email"]
12-
s.homepage = "http://example.com"
12+
s.homepage = ""
1313
s.summary = "Summary of EngineProject."
1414
s.description = "Description of EngineProject."
1515

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
1-
Rails.application.config.assets.configure do |env|
2-
env.register_postprocessor 'text/css', :postprocessor do |context, css|
3-
css.gsub /@import/, 'fail engine'
1+
2+
class SassRailsTestPostProcessor
3+
def initialize(filename, &block)
4+
@filename = filename
5+
@source = block.call
6+
end
7+
8+
def render(context)
9+
self.class.run(@source)
10+
end
11+
12+
def self.run(source)
13+
source.gsub /@import/, 'fail engine'
414
end
15+
16+
def self.call(input)
17+
source = input[:data]
18+
result = run(source)
19+
{ data: result }
20+
end
21+
end
22+
23+
Rails.application.config.assets.configure do |env|
24+
env.register_postprocessor 'text/css', SassRailsTestPostProcessor
525
end

0 commit comments

Comments
 (0)