sassc-rails 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +27 -7
- data/Rakefile +4 -6
- data/lib/sassc/rails.rb +1 -0
- data/lib/sassc/rails/compressor.rb +21 -0
- data/lib/sassc/rails/railtie.rb +1 -1
- data/lib/sassc/rails/template.rb +18 -6
- data/lib/sassc/rails/version.rb +1 -1
- data/sassc-rails.gemspec +1 -1
- data/test/sassc_rails_test.rb +51 -7
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91ada003823fa3206c9bf2087447f97e56d9a17f
|
4
|
+
data.tar.gz: ac6573985e2bc5a8edc719d025836cabecbef7da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 088e2bf35e5a1092bbc0e5a443fe11ae6cbf99356922908f82e6b770bff8b398ab306cf8b175e5820e65d5bc3bc4952147b9a9b5db7bb1b054d2ca7b40b3e593
|
7
|
+
data.tar.gz: b09954d3ce74ca2d4f4eabad08621b4c8fb506844ac4c6315c53405092a57263faea6be88d802257d0ad9ac6b2600027e951a8f2399495f67659fea8feb2f34e
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
We all love working with Sass, but compilation can take quite a long time for larger
|
4
4
|
codebases. This gem integrates the C implementation of Sass,
|
5
|
-
[
|
5
|
+
[LibSass](https://github.com/sass/libsass), into the asset pipeline.
|
6
6
|
|
7
7
|
In one larger project, this made compilation 4x faster:
|
8
8
|
|
@@ -24,10 +24,23 @@ This should essentially be a drop in alternative to [sass-rails](https://github.
|
|
24
24
|
|
25
25
|
__Note: This is a new project, please report any issues you come across!__
|
26
26
|
|
27
|
+
## Inline Source Maps
|
27
28
|
|
28
|
-
|
29
|
+
With SassC-Rails, it's also extremely easy to turn on inline source maps. Simply
|
30
|
+
add the following configuration to your development.rb file:
|
29
31
|
|
30
|
-
|
32
|
+
```ruby
|
33
|
+
# config/environments/development.rb
|
34
|
+
config.sass.inline_source_maps = true
|
35
|
+
```
|
36
|
+
|
37
|
+
Note, as indicated, these source maps are *inline*. They will not generate additional
|
38
|
+
files or anything like that. Instead, they will be appended to the compiled
|
39
|
+
application.css file.
|
40
|
+
|
41
|
+
## LibSass Compatibility With Ruby Sass
|
42
|
+
|
43
|
+
For a look at the compatibility between Ruby Sass and LibSass, check this
|
31
44
|
[compatibility chart](http://sass-compatibility.github.io/) out.
|
32
45
|
|
33
46
|
|
@@ -43,23 +56,30 @@ And then execute:
|
|
43
56
|
|
44
57
|
$ bundle
|
45
58
|
|
59
|
+
## Common Issues
|
46
60
|
|
47
|
-
|
61
|
+
### Deployment to Heroku
|
48
62
|
|
49
|
-
Due to
|
63
|
+
Due to LibSass compilation requirements, you must upgrade to the
|
50
64
|
[Heroku Cedar-14 Stack](https://devcenter.heroku.com/articles/cedar-14-migration)
|
51
65
|
in order to successfully install this gem.
|
52
66
|
|
53
67
|
Upgrading to Cedar-14 is usually a painless process.
|
54
68
|
|
55
69
|
|
56
|
-
|
70
|
+
### Installing alongside a gem that depends on Sass-Rails
|
57
71
|
|
58
72
|
Libraries explicitly depending on Sass-Rails, such as ActiveAdmin, can cause
|
59
73
|
conflicts with installation of SassC-Rails. While we have no built-in solution
|
60
74
|
for this, please check out [this issue](https://github.com/bolandrm/sassc-rails/issues/6)
|
61
75
|
for a workaround.
|
62
76
|
|
77
|
+
## Changelog
|
78
|
+
|
79
|
+
- **1.0.0**
|
80
|
+
- Initial Release
|
81
|
+
- Add support for inline source maps
|
82
|
+
- Support compression in the way that Sass-Rails handles it
|
63
83
|
|
64
84
|
## Contributing
|
65
85
|
|
@@ -74,4 +94,4 @@ for a workaround.
|
|
74
94
|
## Credits
|
75
95
|
|
76
96
|
This gem is based on [sass-rails](https://github.com/rails/sass-rails), and
|
77
|
-
is maintained by [Ryan Boland](https://ryanboland.com).
|
97
|
+
is maintained by [Ryan Boland](https://ryanboland.com) and [awesome contributors](https://github.com/bolandrm/sassc-rails/graphs/contributors).
|
data/Rakefile
CHANGED
@@ -16,19 +16,17 @@ namespace :tests do
|
|
16
16
|
]
|
17
17
|
|
18
18
|
gemfiles.each do |gemfile|
|
19
|
-
desc "Run
|
19
|
+
desc "Run tests against #{gemfile}"
|
20
20
|
task gemfile do
|
21
|
-
sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle
|
21
|
+
sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle install"
|
22
22
|
sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle exec rake test"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
desc "Run
|
26
|
+
desc "Run tests against all common asset pipeline setups"
|
27
27
|
task :all do
|
28
28
|
gemfiles.each do |gemfile|
|
29
|
-
|
30
|
-
sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle --quiet"
|
31
|
-
sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle exec rake test"
|
29
|
+
Rake::Task["tests:#{gemfile}"].invoke
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
data/lib/sassc/rails.rb
CHANGED
@@ -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
|
data/lib/sassc/rails/railtie.rb
CHANGED
@@ -56,7 +56,7 @@ module SassC::Rails
|
|
56
56
|
app.config.assets.css_compressor = nil
|
57
57
|
|
58
58
|
if !Rails.env.development?
|
59
|
-
app.config.
|
59
|
+
app.config.assets.css_compressor ||= :sass
|
60
60
|
else
|
61
61
|
# Use expanded output instead of the sass default of :nested unless specified
|
62
62
|
app.config.sass.style ||= :expanded
|
data/lib/sassc/rails/template.rb
CHANGED
@@ -13,13 +13,12 @@ module SassC::Rails
|
|
13
13
|
syntax: self.class.syntax,
|
14
14
|
load_paths: input[:environment].paths,
|
15
15
|
importer: SassC::Rails::Importer,
|
16
|
-
style: sass_style,
|
17
16
|
sprockets: {
|
18
17
|
context: context,
|
19
18
|
environment: input[:environment],
|
20
19
|
dependencies: context.metadata[:dependency_paths]
|
21
20
|
}
|
22
|
-
}
|
21
|
+
}.merge(config_options)
|
23
22
|
|
24
23
|
engine = ::SassC::Engine.new(input[:data], options)
|
25
24
|
|
@@ -44,12 +43,11 @@ module SassC::Rails
|
|
44
43
|
syntax: syntax,
|
45
44
|
load_paths: context.environment.paths,
|
46
45
|
importer: SassC::Rails::Importer,
|
47
|
-
style: sass_style,
|
48
46
|
sprockets: {
|
49
47
|
context: context,
|
50
48
|
environment: context.environment
|
51
49
|
}
|
52
|
-
}
|
50
|
+
}.merge(config_options)
|
53
51
|
|
54
52
|
::SassC::Engine.new(data, options).render
|
55
53
|
end
|
@@ -61,9 +59,23 @@ module SassC::Rails
|
|
61
59
|
include Sprockets2
|
62
60
|
end
|
63
61
|
|
62
|
+
def config_options
|
63
|
+
opts = { style: sass_style }
|
64
|
+
|
65
|
+
|
66
|
+
if Rails.application.config.sass.inline_source_maps
|
67
|
+
opts.merge!({
|
68
|
+
source_map_file: ".",
|
69
|
+
source_map_embed: true,
|
70
|
+
source_map_contents: true,
|
71
|
+
})
|
72
|
+
end
|
73
|
+
|
74
|
+
opts
|
75
|
+
end
|
76
|
+
|
64
77
|
def sass_style
|
65
|
-
|
66
|
-
"sass_style_#{style}".to_sym
|
78
|
+
(Rails.application.config.sass.style || :expanded).to_sym
|
67
79
|
end
|
68
80
|
end
|
69
81
|
|
data/lib/sassc/rails/version.rb
CHANGED
data/sassc-rails.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
# unfortunately we require sass for now, so that we can
|
27
27
|
# reuse portions of the sprockets template
|
28
28
|
spec.add_dependency 'sass'
|
29
|
-
spec.add_dependency "sassc", "~> 1.
|
29
|
+
spec.add_dependency "sassc", "~> 1.5"
|
30
30
|
|
31
31
|
spec.add_dependency "tilt"
|
32
32
|
|
data/test/sassc_rails_test.rb
CHANGED
@@ -155,17 +155,12 @@ class SassRailsTest < MiniTest::Unit::TestCase
|
|
155
155
|
assert_equal :expanded, Rails.application.config.sass.style
|
156
156
|
end
|
157
157
|
|
158
|
-
def
|
158
|
+
def test_style_config_item_is_honored
|
159
159
|
@app.config.sass.style = :nested
|
160
|
-
|
160
|
+
initialize!
|
161
161
|
assert_equal :nested, Rails.application.config.sass.style
|
162
162
|
end
|
163
163
|
|
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
|
-
|
169
164
|
def test_context_is_being_passed_to_erb_render
|
170
165
|
initialize!
|
171
166
|
|
@@ -178,6 +173,37 @@ class SassRailsTest < MiniTest::Unit::TestCase
|
|
178
173
|
css_output = render_asset("special_characters.scss")
|
179
174
|
end
|
180
175
|
|
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
|
+
|
198
|
+
def test_compression_works
|
199
|
+
initialize_prod!
|
200
|
+
|
201
|
+
asset = render_asset("application.scss")
|
202
|
+
assert_equal <<-CSS, asset
|
203
|
+
.hello{color:#FFF}
|
204
|
+
CSS
|
205
|
+
end
|
206
|
+
|
181
207
|
def test_compression_works
|
182
208
|
initialize_prod!
|
183
209
|
|
@@ -187,6 +213,24 @@ class SassRailsTest < MiniTest::Unit::TestCase
|
|
187
213
|
CSS
|
188
214
|
end
|
189
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
|
224
|
+
|
225
|
+
def test_allows_for_inclusion_of_inline_source_maps
|
226
|
+
@app.config.sass.inline_source_maps = true
|
227
|
+
initialize_dev!
|
228
|
+
|
229
|
+
asset = render_asset("application.scss")
|
230
|
+
assert_match /.hello/, asset
|
231
|
+
assert_match /sourceMappingURL/, asset
|
232
|
+
end
|
233
|
+
|
190
234
|
#test 'sprockets require works correctly' do
|
191
235
|
# skip
|
192
236
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: '1.5'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: '1.5'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: tilt
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- gemfiles/with_sass_rails.gemfile
|
158
158
|
- lib/sassc-rails.rb
|
159
159
|
- lib/sassc/rails.rb
|
160
|
+
- lib/sassc/rails/compressor.rb
|
160
161
|
- lib/sassc/rails/functions.rb
|
161
162
|
- lib/sassc/rails/importer.rb
|
162
163
|
- lib/sassc/rails/railtie.rb
|