Skip to content

Commit a7e1b5f

Browse files
authored
Merge pull request #65 from schneems/schneems/sprockets4
Sprockets 4 Compatibility
2 parents 6a00d20 + d69fda1 commit a7e1b5f

File tree

6 files changed

+41
-19
lines changed

6 files changed

+41
-19
lines changed

.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ script: "bundle exec rake test"
77
gemfile:
88
- gemfiles/sprockets_2_12.gemfile
99
- gemfiles/sprockets_3_0.gemfile
10+
- gemfiles/sprockets_4_0.gemfile
1011
- gemfiles/sprockets-rails_3_0.gemfile
1112
- gemfiles/rails_4_2.gemfile
1213
- gemfiles/rails_4_1.gemfile

Rakefile

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ task :test do
44
$LOAD_PATH.unshift('lib', 'test')
55
Dir.glob('./test/**/*_test.rb') { |f| require f }
66
end
7+
task :default => [:test]
78

89
namespace :tests do
910
gemfiles = %w[

gemfiles/sprockets_4_0.gemfile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
source 'https://rubygems.org'
2+
3+
gem "sprockets", "~> 4.0.x"
4+
5+
# Specify your gem's dependencies in sassc-rails.gemspec
6+
gemspec path: "../"

lib/sassc/rails/railtie.rb

+9-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,15 @@ class Railtie < ::Rails::Railtie
5050
self.sass_config = app.config.sass
5151
end
5252

53-
env.register_engine '.sass', SassC::Rails::SassTemplate
54-
env.register_engine '.scss', SassC::Rails::ScssTemplate
53+
if env.respond_to?(:register_transformer)
54+
env.register_transformer 'text/sass', 'text/css', SassC::Rails::SassTemplate.new #->() { puts "yoyoyoy" }
55+
env.register_transformer 'text/scss', 'text/css', SassC::Rails::ScssTemplate.new #->() { puts "yoyoyoy" }
56+
end
57+
58+
if env.respond_to?(:register_engine)
59+
env.register_engine '.sass', SassC::Rails::SassTemplate
60+
env.register_engine '.scss', SassC::Rails::ScssTemplate
61+
end
5562
end
5663
end
5764

lib/sassc/rails/template.rb

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
require "sprockets/version"
2-
require "sprockets/sass_template"
2+
3+
begin
4+
require 'sprockets/sass_processor'
5+
rescue LoadError
6+
require "sprockets/sass_template"
7+
end
8+
39
require "sprockets/utils"
410

511
module SassC::Rails
6-
class SassTemplate < Sprockets::SassTemplate
12+
13+
class SassTemplate < defined?(Sprockets::SassProcessor) ? Sprockets::SassProcessor : Sprockets::SassTemplate
714
module Sprockets3
815
def call(input)
916
context = input[:environment].context_class.new(input)

test/sassc_rails_test.rb

+15-15
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def initialize_prod!
5454
def test_setup_works
5555
initialize_dev!
5656

57-
asset = render_asset("application.scss")
57+
asset = render_asset("application.css")
5858

5959
assert_equal <<-CSS, asset
6060
.hello {
@@ -67,7 +67,7 @@ def test_raises_sassc_syntax_error
6767
initialize!
6868

6969
assert_raises(SassC::SyntaxError) do
70-
render_asset("syntax_error.scss")
70+
render_asset("syntax_error.css")
7171
end
7272
end
7373

@@ -76,7 +76,7 @@ def test_all_sass_asset_paths_work
7676

7777
initialize!
7878

79-
css_output = render_asset("helpers_test.scss")
79+
css_output = render_asset("helpers_test.css")
8080

8181
assert_match %r{asset-path:\s*"/assets/rails.png"}, css_output, 'asset-path:\s*"/assets/rails.png"'
8282
assert_match %r{asset-url:\s*url\(/assets/rails.png\)}, css_output, 'asset-url:\s*url\(/assets/rails.png\)'
@@ -87,7 +87,7 @@ def test_all_sass_asset_paths_work
8787
def test_sass_asset_paths_work
8888
initialize!
8989

90-
css_output = render_asset("helpers_test.scss")
90+
css_output = render_asset("helpers_test.css")
9191

9292
assert_match %r{video-path:\s*"/videos/rails.mp4"}, css_output, 'video-path:\s*"/videos/rails.mp4"'
9393
assert_match %r{video-url:\s*url\(/videos/rails.mp4\)}, css_output, 'video-url:\s*url\(/videos/rails.mp4\)'
@@ -118,7 +118,7 @@ def test_sass_asset_paths_work
118118
def test_sass_imports_work_correctly
119119
initialize!
120120

121-
css_output = render_asset("imports_test.scss")
121+
css_output = render_asset("imports_test.css")
122122
assert_match /main/, css_output
123123
assert_match /top-level/, css_output
124124
assert_match /partial-sass/, css_output
@@ -162,7 +162,7 @@ def test_line_comments_active_in_dev
162162
@app.config.sass.line_comments = true
163163
initialize_dev!
164164

165-
css_output = render_asset("css_scss_handler.css.scss")
165+
css_output = render_asset("css_scss_handler.css")
166166
assert_match %r{/* line 1}, css_output
167167
assert_match %r{.+/sassc-rails/test/dummy/app/assets/stylesheets/css_scss_handler.css.scss}, css_output
168168
end
@@ -176,7 +176,7 @@ def test_context_is_being_passed_to_erb_render
176176

177177
def test_special_characters_compile
178178
initialize!
179-
css_output = render_asset("special_characters.scss")
179+
css_output = render_asset("special_characters.css")
180180
end
181181

182182
def test_css_compressor_config_item_is_honored_if_not_development_mode
@@ -204,7 +204,7 @@ def test_css_compressor_is_defined_in_prod_mode
204204
def test_compression_works
205205
initialize_prod!
206206

207-
asset = render_asset("application.scss")
207+
asset = render_asset("application.css")
208208
assert_equal <<-CSS, asset
209209
.hello{color:#FFF}
210210
CSS
@@ -213,7 +213,7 @@ def test_compression_works
213213
def test_compression_works
214214
initialize_prod!
215215

216-
asset = render_asset("application.scss")
216+
asset = render_asset("application.css")
217217
assert_equal <<-CSS, asset
218218
.hello{color:#FFF}
219219
CSS
@@ -226,14 +226,14 @@ def test_sassc_compression_is_used
226226

227227
initialize_prod!
228228

229-
render_asset("application.scss")
229+
render_asset("application.css")
230230
end
231231

232232
def test_allows_for_inclusion_of_inline_source_maps
233233
@app.config.sass.inline_source_maps = true
234234
initialize_dev!
235235

236-
asset = render_asset("application.scss")
236+
asset = render_asset("application.css")
237237
assert_match /.hello/, asset
238238
assert_match /sourceMappingURL/, asset
239239
end
@@ -278,14 +278,14 @@ def test_globbed_imports_work_when_globbed_file_is_changed
278278
file.puts '.new-file-test { color: #000; }'
279279
end
280280

281-
css_output = render_asset("glob_test.scss")
281+
css_output = render_asset("glob_test.css")
282282
assert_match /new-file-test/, css_output
283283

284284
File.open(new_file, 'w') do |file|
285285
file.puts '.changed-file-test { color: #000; }'
286286
end
287287

288-
new_css_output = render_asset("glob_test.scss")
288+
new_css_output = render_asset("glob_test.css")
289289
assert_match /changed-file-test/, new_css_output
290290
refute_equal css_output, new_css_output
291291
ensure
@@ -297,15 +297,15 @@ def test_globbed_imports_work_when_globbed_file_is_added
297297
begin
298298
initialize!
299299

300-
css_output = render_asset("glob_test.scss")
300+
css_output = render_asset("glob_test.css")
301301
refute_match /changed-file-test/, css_output
302302
new_file = File.join(File.dirname(__FILE__), 'dummy', 'app', 'assets', 'stylesheets', 'globbed', 'new_glob.scss')
303303

304304
File.open(new_file, 'w') do |file|
305305
file.puts '.changed-file-test { color: #000; }'
306306
end
307307

308-
new_css_output = render_asset("glob_test.scss")
308+
new_css_output = render_asset("glob_test.css")
309309
assert_match /changed-file-test/, new_css_output
310310
refute_equal css_output, new_css_output
311311
ensure

0 commit comments

Comments
 (0)