Skip to content

Commit 15e6092

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 90c6dd1 commit 15e6092

File tree

5 files changed

+47
-10
lines changed

5 files changed

+47
-10
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ gemfile:
1515
- gemfiles/Gemfile-sprockets-2-12
1616
- gemfiles/Gemfile-sprockets-2-8
1717
- gemfiles/Gemfile-sprockets-3-0
18+
- gemfiles/Gemfile-sprockets-4-0
1819
- gemfiles/Gemfile-sprockets-rails-2-2
1920
- gemfiles/Gemfile-sprockets-rails-master
2021
- 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: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ require "engine_project/version"
77
Gem::Specification.new do |s|
88
s.name = "engine_project"
99
s.version = EngineProject::VERSION
10-
s.authors = ["TODO: Your name"]
11-
s.email = ["TODO: Your email"]
12-
s.homepage = "TODO"
13-
s.summary = "TODO: Summary of EngineProject."
14-
s.description = "TODO: Description of EngineProject."
10+
s.authors = ["Your name"]
11+
s.email = ["Your email"]
12+
s.homepage = ""
13+
s.summary = "Summary of EngineProject."
14+
s.description = "Description of EngineProject."
1515

1616
s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
1717
s.test_files = Dir["test/**/*"]
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)