-
Notifications
You must be signed in to change notification settings - Fork 331
Description
If you have the following invalid CSS in one of your css files:
.example {
//width: 100% !important;}
You will get a Sass::SyntaxError when config.css_compressor is set to sass ( the default option for test and production env in Rails ).
In development env this won't cause any issues since the css_compressor isn't enabled. Also, it looks like sass-rails doesn't provide a viable way to determine which file is causing the error.
Here is a sample application to reproduce the issue ( the README contains more information ): https://github.com/fernandomm/scss-comments-failure
Here is the full exception:
rake aborted!
Sass::SyntaxError: Invalid CSS after " */": expected "}", was ""
(sass):19
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:1189:in `expected'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:1125:in `expected'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:1120:in `tok!'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:658:in `block'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:649:in `ruleset'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:675:in `block_child'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:665:in `block_contents'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:125:in `stylesheet'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:41:in `parse'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/engine.rb:406:in `_to_tree'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/engine.rb:281:in `render'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/sass_compressor.rb:48:in `call'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/sass_compressor.rb:28:in `call'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/processor_utils.rb:75:in `call_processor'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/processor_utils.rb:56:in `reverse_each'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/processor_utils.rb:56:in `call_processors'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/loader.rb:134:in `load_from_unloaded'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/loader.rb:60:in `block in load'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/loader.rb:44:in `load'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/cached_environment.rb:47:in `load'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/base.rb:66:in `find_asset'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/manifest.rb:142:in `block in find'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/path_utils.rb:223:in `block in stat_tree'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/path_utils.rb:207:in `block in stat_directory'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/path_utils.rb:204:in `each'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/path_utils.rb:204:in `stat_directory'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/path_utils.rb:222:in `stat_tree'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/legacy.rb:105:in `each'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/legacy.rb:105:in `block in logical_paths'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/legacy.rb:104:in `each'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/legacy.rb:104:in `logical_paths'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/manifest.rb:140:in `find'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/sprockets/manifest.rb:185:in `compile'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-rails-3.0.4/lib/sprockets/rails/task.rb:68:in `block (3 levels) in define'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.0/lib/rake/sprocketstask.rb:147:in `with_logger'
/Users/fernando/.rvm/gems/ruby-2.3.0/gems/sprockets-rails-3.0.4/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
Maybe the css_processor shouldn't fail in this case, or at least it should indicate the exact file that is causing this problem? If you have a big or multiple CSS files it's hard to find the error.