null

Тема оформления Liferay 6.2.2 и Undefined mixin 'respond-to'

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";

всё снова стало собираться и деплоиться как раньше.

Коротко о себе:

Работаю ведущим программистом в компании Tune IT и ассистентом кафедры Вычислительной техники в Университете ИТМО .

Занимаюсь проектами, связанными с разработкой разного рода веб-приложений (порталы, CRM-системы, системы электронного документооборота), а также, в рамках научной работы на кафедре, изучаю возможности применения семантического анализа в задачах САПР.