Open magicspon opened 11 years ago
I have the same problem,like true-b.png false-b.png and so on~
azure.png also causes an error.
I had a similiar problem with an asset called snow.png. Tracing the code it executes this function:
def convert_sprite_name(sprite)
case sprite
when Sass::Script::Value::Color
rgb = if reversed_color_names.keys.first.size == 3
sprite.rgb
else
# Sass 3.3 includes the alpha channel
sprite.rgba
end
identifier(reversed_color_names[rgb])
when Sass::Script::Value::Bool
identifier(sprite.to_s)
else
sprite
end
end
I wish I knew Ruby better, I can't really tell what's going on here and why. Nevertheless, this issue might be linked to the fact that 'peru', 'azure' and 'snow' are all HTML color names...
Sounds definitely like a bug and your guess seems correct to me.
Can you provide a stacktrace?
Created a new project with compass create
, inserted files images/assets/Peru.png
and images/assets/normal.png
.
Output of compass compile --trace
:
unchanged sass/ie.sass
unchanged sass/print.sass
remove images/assets-sa069c51a4f.png
create images/assets-s1e63a755af.png
NoMethodError on line ["137"] of /Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/sass_extensions/functions/sprites.rb: undefined method `parent' for nil:NilClass
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/script/tree/funcall.rb:140:in `_perform'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/script/tree/node.rb:50:in `perform'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:270:in `visit_if'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:36:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `block in visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `block in with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:223:in `block (3 levels) in visit_each'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:223:in `map'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:223:in `block (2 levels) in visit_each'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:215:in `map'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:215:in `block in visit_each'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:173:in `with_environment'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:214:in `visit_each'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:36:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `block in visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `block in with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (4 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `map'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (3 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:173:in `with_environment'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (2 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:78:in `perform_arguments'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:330:in `block in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:98:in `block in with_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:98:in `with_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:318:in `visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:36:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `block in visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `block in with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (4 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `map'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (3 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:173:in `with_environment'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (2 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:78:in `perform_arguments'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:330:in `block in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:98:in `block in with_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:98:in `with_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:318:in `visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:36:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `block in visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `block in with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (4 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `map'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (3 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:173:in `with_environment'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:335:in `block (2 levels) in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:78:in `perform_arguments'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:330:in `block in visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:98:in `block in with_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:98:in `with_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:318:in `visit_mixin'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:36:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `block in visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `block in with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:121:in `with_frame'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/stack.rb:79:in `with_base'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:152:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:52:in `block in visit_children'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:52:in `map'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:52:in `visit_children'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:161:in `block in visit_children'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:173:in `with_environment'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:160:in `visit_children'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:36:in `block in visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:180:in `visit_root'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/base.rb:36:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:151:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/visitors/perform.rb:8:in `visit'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/root_node.rb:36:in `css_tree'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/tree/root_node.rb:20:in `render'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.3.7/lib/sass/engine.rb:274:in `render'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-import-once-1.0.4/lib/compass/import-once/engine.rb:17:in `block in render'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-import-once-1.0.4/lib/compass/import-once/engine.rb:29:in `with_import_scope'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-import-once-1.0.4/lib/compass/import-once/engine.rb:16:in `render'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:171:in `block (2 levels) in compile'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:153:in `timed'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:166:in `block in compile'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/logger.rb:46:in `red'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:165:in `compile'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:144:in `compile_if_required'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:129:in `block (2 levels) in run'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:127:in `each'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:127:in `block in run'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:153:in `timed'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/compiler.rb:126:in `run'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/commands/update_project.rb:49:in `perform'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/commands/base.rb:18:in `execute'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/commands/project_base.rb:19:in `execute'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/exec/sub_command_ui.rb:43:in `perform!'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/lib/compass/exec/sub_command_ui.rb:15:in `run!'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/bin/compass:30:in `block in <top (required)>'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/bin/compass:44:in `call'
/Users/shirvonen/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/compass-1.0.0.alpha.19/bin/compass:44:in `<top (required)>'
/Users/shirvonen/.rbenv/versions/2.1.1/bin/compass:23:in `load'
/Users/shirvonen/.rbenv/versions/2.1.1/bin/compass:23:in `<main>'
After renaming Peru.png to foo.png, it compiles just fine.
edit: my addition to screen.sass was
@import 'assets/*.png'
@include all-assets-sprites
The stacktrace points to this line:
bool(map.image_for(sprite.value).parent.nil?)
The error is undefined method `parent' for nil:NilClass.
My guess is that map.image_for()
fails to resolve properly because sprite.value
returns unexpected result due to what @algoni assumed: a filename is mistakenly treated as a color.
I failed to find a definition for sprite.name
to check my guess.
Might be this one.
If this catch is correct, it makes the issue to be a Sass issue rather than Compass one.
This error raises also when sprite name matches pattern _digits__string.png.
@mib32 It would not surprise me if the error for filenames with leading numbers is related to this Sass issue: https://github.com/sass/sass/issues/1722
I have the same problem. digits-string.png causes an error.
I have the same problem too. digits-string.png causes an error.
Hello,
I've just come across the strangest bug ever. For some reason unknown to me I can not create a sprite with an image called Peru.png. All my other flag images are being sprited with no problem, just Peru.png
I thought it might be the image itself that was the problem, but nope, this is not the case. I changed the file name and issue was gone. This is the error message I get in my terminal
"NoMethodError on line 100 of /Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/sass_extensions/functions/sprites.rb: undefined method `parent' for nil:NilClass Run with --trace to see the full backtrace"
Does compass/sass have some problem with Peru? Bad Holiday?
Anyhow, hears one for the pile!
Cheers all Dave