Skip to content

Commit ad01576

Browse files
committed
Merge pull request #26 from bolandrm/update_compression_scheme
Update compression scheme
2 parents 265406b + 13808fa commit ad01576

File tree

5 files changed

+66
-10
lines changed

5 files changed

+66
-10
lines changed

lib/sassc/rails.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
require_relative "rails/functions"
55
require_relative "rails/importer"
66
require_relative "rails/template"
7+
require_relative "rails/compressor"
78
require_relative "rails/railtie"

lib/sassc/rails/compressor.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
require 'sprockets/sass_compressor'
2+
3+
class Sprockets::SassCompressor
4+
def call(*args)
5+
input = if defined?(data)
6+
data # sprockets 2.x
7+
else
8+
args[0][:data] #sprockets 3.x
9+
end
10+
11+
SassC::Engine.new(
12+
input,
13+
{
14+
style: :compressed
15+
}
16+
).render
17+
end
18+
19+
# sprockets 2.x
20+
alias :evaluate :call
21+
end

lib/sassc/rails/railtie.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class Railtie < ::Rails::Railtie
5656
app.config.assets.css_compressor = nil
5757

5858
if !Rails.env.development?
59-
app.config.sass.style = :compressed
59+
app.config.assets.css_compressor ||= :sass
6060
else
6161
# Use expanded output instead of the sass default of :nested unless specified
6262
app.config.sass.style ||= :expanded

sassc-rails.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
2626
# unfortunately we require sass for now, so that we can
2727
# reuse portions of the sprockets template
2828
spec.add_dependency 'sass'
29-
spec.add_dependency "sassc", "~> 1.3"
29+
spec.add_dependency "sassc", "~> 1.4"
3030

3131
spec.add_dependency "tilt"
3232

test/sassc_rails_test.rb

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,17 +155,12 @@ def test_style_config_item_is_defaulted_to_expanded_in_development_mode
155155
assert_equal :expanded, Rails.application.config.sass.style
156156
end
157157

158-
def test_style_config_item_is_honored_in_development_mode
158+
def test_style_config_item_is_honored
159159
@app.config.sass.style = :nested
160-
initialize_dev!
160+
initialize!
161161
assert_equal :nested, Rails.application.config.sass.style
162162
end
163163

164-
def test_style_config_item_is_not_honored_if_environment_is_not_development
165-
initialize_prod!
166-
assert_equal :compressed, Rails.application.config.sass.style
167-
end
168-
169164
def test_context_is_being_passed_to_erb_render
170165
initialize!
171166

@@ -178,15 +173,54 @@ def test_special_characters_compile
178173
css_output = render_asset("special_characters.scss")
179174
end
180175

176+
def css_compressor_config_item_is_not_honored_in_development_mode
177+
@app.config.assets.css_compressor = :test
178+
initialize_dev!
179+
assert_equal nil, Rails.application.config.assets.css_compressor
180+
end
181+
182+
def css_compressor_config_item_is_honored_if_not_development_mode
183+
@app.config.assets.css_compressor = :test
184+
initialize_prod!
185+
assert_equal :test, Rails.application.config.assets.css_compressor
186+
end
187+
188+
def css_compressor_is_defined_in_test_mode
189+
initialize_test!
190+
assert_equal :sass, Rails.application.config.assets.css_compressor
191+
end
192+
193+
def css_compressor_is_defined_in_prod_mode
194+
initialize_prod!
195+
assert_equal :sass, Rails.application.config.assets.css_compressor
196+
end
197+
181198
def test_compression_works
182199
initialize_prod!
183200

184201
asset = render_asset("application.scss")
185202
assert_equal <<-CSS, asset
186-
.hello{color:#fff}
203+
.hello{color:#FFF}
187204
CSS
188205
end
189206

207+
def test_compression_works
208+
initialize_prod!
209+
210+
asset = render_asset("application.scss")
211+
assert_equal <<-CSS, asset
212+
.hello{color:#FFF}
213+
CSS
214+
end
215+
216+
def test_sassc_compression_is_used
217+
initialize_prod!
218+
219+
engine = stub(render: "")
220+
SassC::Engine.expects(:new).returns(engine)
221+
SassC::Engine.expects(:new).with("", {style: :compressed}).returns(engine)
222+
render_asset("application.scss")
223+
end
190224
#test 'sprockets require works correctly' do
191225
# skip
192226

0 commit comments

Comments
 (0)