symfony2.3 с компасом

извините за мой плохой английский, я использую symfony2.3 на windows8. Когда я пытаюсь использовать фильтр компаса, я получаю сообщение об ошибке: «Вы должны скомпилировать отдельные таблицы стилей из каталога проекта».

Вот моя активная конфигурация:

assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ ]
    ruby: "C:/Ruby200-x64/bin/ruby.exe"
    #java: /usr/bin/java
    filters:
       cssrewrite: ~
       sass:
           bin: "C:/Ruby200-x64/bin/sass"
       compass:
           bin: "C:/Ruby200-x64/bin/compass"

А вот вид:

{% stylesheets 'bundles/walcore/css/*' filter='compass' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

Когда я пытаюсь использовать фильтр SASS, все работает отлично.

кто-нибудь может мне помочь?!


person Walid Mokrani    schedule 08.06.2013    source источник


Ответы (2)


Я сам столкнулся с этой проблемой при попытке перенести наш проект SF2.2 на SF2.3, ниже приведено сравнение командной строки, выполняемой CompassFilter от assets в версиях 2.2 и 2.3 пакета Assetic.

SF 2.2.2 AsseticBundle 2.1.3

"C:\Ruby200\bin\ruby.exe" "C:\Ruby200\bin\compass" "скомпилировать" "C:\Users\Rick\AppData\Local\Temp" "--скучно" "--images-dir " "D:/Projects/cw3sf2/app/../web/bundles/cwmain/images/" "--config" "C:\Users\Rick\AppData\Local\Temp\ass8DCC.tmp" "--sass -dir" "" "--css-dir" "" "C:/Users/Rick/AppData/Local/Temp/ass8DCD.tmp.scss"

SF 2.3 AsseticBundle 2.3.0

"C:\Ruby200\bin\ruby.exe" "C:\Ruby200\bin\compass" "скомпилировать" "C:\Users\Rick\AppData\Local\Temp" "--скучно" "--images-dir " "D:/Projects/cw3sf2/app/../web/bundles/cwmain/images/" "--config" "C:\Users\Rick\AppData\Local\Temp\assD29B.tmp" "--sass -dir" "--css-dir" "C:/Users/Rick/AppData/Local/Temp/assD29C.tmp.scss"

Как вы заметили, предыдущий ProcessBuilder вводил пустые аргументы для --sass-dir и --css-dir с помощью "", тогда как новый ProcessBuilder этого не делает. По-видимому, это заставляет Compass выдавать вам сообщения об ошибках.

Для исправления этого требуется исправление восходящего потока либо в ProcessBuilder, либо требуется, чтобы AsseticBundle вручную установил для --css-dir и --sass-dir значение $tempdir в строке CompassFilter.php 316.

$pb->добавить('--sass-dir')->добавить('')->добавить('--css-dir')->добавить('');

в

$pb->добавить('--sass-dir')->добавить($tempDir)->добавить('--css-dir')->добавить($tempDir);

Ошибка возникает из-за того, что ProcessBuilder был изменен в ветке Symfony 2.3, он экранирует аргументы оболочки другим способом, который игнорирует пустые аргументы. Таким образом, требуемый "" отсутствует в сгенерированной команде. Я поднял этот вопрос перед создателями CompassFilter, хотя он может нуждаться в исправлении.

person hermitcodemonkey    schedule 13.06.2013

я столкнулся с той же проблемой. Чтобы исправить это, я использовал "kriswallsmith/assetic": "v1.1.1 вместо "kriswallsmith/assetic": "1.1.*@dev".

person vetouz    schedule 13.06.2013