Liferay Portal и связанный с ним инструментарий разработчика - замечательные программные продукты, никогда не устающие удивлять меня разнообразием ошибок, возникающих в самых неожиданных ситуациях.
Вот и теперь, при, казалось бы, минорном апгрейде темы для Liferay с версии 6.2.1 до версии 6.2.2 только что прекрасно работавший плагин "развалился" при сборке - CSS отказался собираться, упав на пачке SASS'овских ошибок примерно такого вида:
Sass::SyntaxError: Undefined mixin 'resond-to'.
visit_mixin at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:253
send at org/jruby/RubyKernel.java:2097
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53
collect at org/jruby/RubyArray.java:2318
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:109
with_environment at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:121
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:108
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37
visit_rule at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:320
send at org/jruby/RubyKernel.java:2097
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53
collect at org/jruby/RubyArray.java:2318
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:109
with_environment at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:121
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:108
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37
visit_rule at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:320
send at org/jruby/RubyKernel.java:2097
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53
collect at org/jruby/RubyArray.java:2318
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:109
with_environment at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:121
visit_children at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:108
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37
visit_root at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:128
send at org/jruby/RubyKernel.java:2097
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100
send at org/jruby/RubyKernel.java:2097
visit at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:7
render at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/tree/root_node.rb:20
_render at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/engine.rb:315
render at /tmp/liferay/ruby/gems/sass-3.2.12/lib/sass/engine.rb:262
(root) at <script>:48
Unable to parse /css/custom.css
Важный нюанс - проект темы у нас базируется на официальном мавеновском архетипе, т.е, по факту, процесс миграции заключался только в правке версий в pom.xml - все зависимости "подхватились" автоматически. Тем не менее, при изменении всего одной цифры в версии тема собираться перестала. Перебор вариантов показал, что CSS компилируется успешно только если из него убрать все SASS'овские примеси - от их номенклатуры успешность компиляции никак не зависит.
Т.к. такой вариант меня, ясное дело, не устроил, а копаться в конфигах транслятора не хотелось, начался очередной сеанс гуглинга в надежде на то, что кто-то уже сталкивался с этой проблемой. Как ни странно, через некоторое время поиски увенчались успехом - была найдена вот такая вот тема на официальном форуме. Суть - судя по всему, разработчики решили выкинуть из CSS-шаблонов архетипа парочку дефолтных SASS'овых импортов. После того, как я, по совету из форума, добавил в начало своего custom.css эти две строчки:
@import "compass";
@import "mixins";
всё снова стало собираться и деплоиться как раньше.