Ошибка с опросом компаса на Windows 7 - PullRequest
9 голосов
/ 29 июня 2011

Я пытаюсь работать локально над приложением PHP, которое я клонировал из репозитория Git, который используется моим партнером.

Он использует Mac, и до сих пор я работал над приложением в виртуальной среде Ubuntu Linux. Обе среды смогли использовать опрос Compass с одинаковой структурой файлов и файлов.

В Windows 7 я запускаю команды Compass из Cygwin, и эту команду я использую для получения опроса Compass из корневого каталога приложения (C: / wamp / www / application):

compass watch --trace src/Application/ApplicationBundle/Resources/compass/

Когда я вношу изменения в файл .scss, я получаю следующую ошибку:

ArgumentError on line 716 of /usr/lib/ruby/1.8/pathname.rb: different prefix: "/ /cygdrivecwampwwwlimelightsrclimelightlimelightbundleresourcescompasssrcpartials _object.scss" and "/cygdrive/c/wamp/www/limelight/src/limelight/limelightbundle/ resources/compass/src" /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:81:in 'split_path' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:69:in 'run_callback' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:55:in 'callback_action' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:35:in 'update' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:39:in 'modified' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:37:in 'each' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:37:in 'modified' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:18:in 'refresh' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:17:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:17:in 'each' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:17:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:15:in 'loop' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:15:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/monitor.rb:26:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm.rb:20:in 'monitor' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/watch_project.rb:86:in 'perform' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/base.rb:18:in 'execute' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/project_base.rb:19:in 'execute' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb:43:in 'perform!' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb:15:in 'run!' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass:25 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass:39:in 'call' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass:39 /usr/bin/compass:19:in 'load' /usr/bin/compass:19

Все, что я смог найти с помощью поиска, это то, что он может иметь какое-то отношение к тому факту, что Windows использует заглавные буквы своих дисков, хотя отсутствие косых черт в возвращаемом пути заставляет меня думать, что проблема может быть в другом месте.

Кто-нибудь знает, почему я могу получить эту ошибку в Windows, но не на других платформах?

ПРИМЕЧАНИЕ. Я нашел обходной путь , включающий установку ruby ​​(и компаса) через командную строку Windows, а не Cygwin, и на данный момент это должно работать нормально. Тем не менее, если у кого-то есть идеи, мне все равно интересно, в чем может быть проблема.

Ответы [ 5 ]

26 голосов
/ 01 июля 2011

Согласно этой фиксации , это проблема, вызванная зависимостью компаса, называемой FSSM. Он используется для отслеживания изменений файлов в компасе. Обходной путь описан в этом комментарии .

Похоже, что FSSM обнаруживает, что ruby ​​работает внутри коробки Windows, и обрабатывает пути в Windows (C:\blabla). Закомментирование строки 26 файла <fssm_gem_path>/lib/fssm/pathname.rb заставляет compass watch работать как положено. Вы также можете добавить

unless path[0, 1] == File::SEPARATOR

до конца строки 26, чтобы она заработала.

12 голосов
/ 08 января 2012

Я подумал, что просто предоставлю немного больше информации, чтобы помочь людям найти файл pathname.rb.

В приглашении cygwin введите:

gem env

Это (неудивительно) вызывает массу информации о вашей установке Ruby Gems. Найдите строку, в которой указана КАТАЛОГ УСТАНОВКИ. Мой был:

/usr/lib/ruby/gems/1.8

Теперь в Windows Explorer перейдите в это местоположение, но замените «usr» на каталог установки cygwin. Поэтому вышеупомянутый путь становится:

C:\cygwin\lib\ruby\gems\1.8

Оказавшись в этом месте, переходите вниз, пока не найдете каталог fssm gem.

В этом каталоге [fssm] перейдите по адресу:

/lib/fssm/

... и там вы должны найти файл pathname.rb.

Отредактируйте его, как указано выше, и все хорошо. Надеюсь, это поможет.

0 голосов
/ 11 июля 2013

Используя Cygwin, переустановите релиз компаса (например, 0.13+). У меня работает с Compass 0.13.alpha.4 (Markab) Для этого:

gem uninstall compass
gem install compass --pre --no-rdoc --no-ri
0 голосов
/ 06 декабря 2012

Я столкнулся с этой же ошибкой с немного другой настройкой. Моя папка проекта находилась на сетевом диске (ruby и sass / compass установлены локально), и каждый раз, когда я вносил изменения в файл .scss, компас зависал с ошибками, аналогичными OP. Я решил проблему, подключив сетевой диск вместо прямого доступа к нему через сеть (щелкните правой кнопкой мыши на «Мой компьютер» и выберите карту сетевого диска, чтобы я мог получить доступ к своему удаленному диску в точке A :).

Теперь вместо «наблюдения за компасом // SERVERNAME / My_Project» (я использую Git Bash) я делаю «наблюдение за компасом / My_Project», и компас перестал падать.

Надеюсь, это поможет кому-то еще.

0 голосов
/ 30 июня 2011

Смотрите здесь для возможного исправления:

...