2011-06-29 12 views
9

Estoy intentando trabajar localmente en una aplicación PHP que he clonado desde el repositorio de Git que uso mi compañero y yo.Error con la encuesta de Compass en Windows 7

Utiliza una Mac, y hasta ahora he estado trabajando en la aplicación en un entorno Ubuntu Linux virtual. Ambos entornos han podido utilizar el sondeo Compass con la misma estructura de archivos y archivos.

En Windows 7, corro comandos Brújula de Cygwin, y este es el comando que utilizo para tener sondeo Brújula desde el directorio raíz de la aplicación (C:/wamp/www/aplicación):

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

Cuando se realiza un cambio en un archivo .scss, recibo el siguiente error:

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

todo lo que he sido capaz de encontrar a través de la búsqueda es que se puede tener algo que ver con el hecho que Windows capitaliza sus nombres de unidad, aunque la falta de barras en la ruta devuelta me hace pensar que el problema puede estar en otra parte.

¿Alguien sabe por qué podría recibir este error en Windows, pero no en otras plataformas?

NOTA: He encontrado un work-around que implica la instalación de ruby ​​(y brújula) a través del símbolo del sistema de Windows en lugar de Cygwin, y que debería funcionar bien por ahora. Aún así, si alguien tiene ideas, todavía tengo curiosidad sobre cuál podría ser el problema.

+0

Se puede publicar la traza inversa? – RobertPitt

+0

@RobertPitt hecho! –

+0

Estoy teniendo el mismo problema en octubre de 15 y no puedo hacer que esto funcione con las soluciones publicadas aquí, que ahora tienen varios años. El 'work-around' en su edición ahora es un enlace inactivo. Estoy usando la versión 1.9.3 de Ruby. El código proporcionado en "línea 26" no es el mismo en mi archivo pathname.rb. Si alguien tiene alguna solución actualizada, por favor avise ... – Inigo

Respuesta

27

Según this commit, esto es un problema causado por una dependencia brújula llamada FSSM. Se usa para controlar los cambios de archivos en la brújula. Una solución alternativa se describe en this comment.

Parece que FSSM detecta que el ruby ​​se ejecuta dentro de un cuadro de Windows y trata las rutas en el modo de Windows (C:\blabla). Comentando la línea 26 del archivo <fssm_gem_path>/lib/fssm/pathname.rb hace que compass watch funcione como se esperaba. También puede agregar

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

hasta el final de la línea 26 para hacerlo funcionar.

0
+0

Lamentablemente, eso no funcionó, todavía recibo el mismo mensaje exacto. ¡Gracias de cualquier forma! Encontré un [work-around] (http://robhoward.id.au/2011/01/compass-sass-on-windows/) que implicaba la instalación de ruby ​​(y brújula) a través del símbolo del sistema de Windows en lugar de Cygwin, y eso debería funcionar bien por ahora. Aún así, si alguien tiene ideas, todavía tengo curiosidad sobre cuál podría ser el problema. –

12

Pensé que solo proporcionaría un poco más de información para ayudar a las personas a encontrar el archivo pathname.rb.

En el tipo del aviso cygwin:

gem env 

Este (como era de esperar) nos lleva a una carga de información sobre su Installtion de Ruby Gems. Busque la línea que especifica el DIRECTORIO DE INSTALACIÓN. El mío era:

/usr/lib/ruby/gems/1.8 

Ahora en Windows Explorer vaya a esta ubicación, pero sustituto "usr" para el directorio de instalación de cygwin.Por lo tanto, la ruta anterior se convierte en:

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

Una vez en esta ubicación, desglose hasta encontrar el directorio fssm gem.

Dentro de este directorio [FSSM] entrar en:

/lib/fssm/ 

... y usted debe encontrar el archivo pathname.rb.

Edítalo como arriba y todo está bien. Espero que esto ayude.

0

Me encontré con este mismo error con una configuración ligeramente diferente. La carpeta de mi proyecto estaba en una unidad de red (ruby y sass/compass instalados localmente), y cada vez que hacía un cambio en un archivo .scss, la brújula se bloqueaba con errores similares al OP. Resolví el problema al mapear mi unidad de red en lugar de acceder a ella directamente a través de la red (hice clic derecho en Mi PC y elegí la unidad de red del mapa para poder acceder a mi unidad remota en A :).

Ahora, en lugar de hacer 'brújula watch // SERVERNAME/My_Project' (estoy usando Git Bash), hago 'brújula ver a/My_Project' y la brújula dejó de fallar.

Espero que ayude a alguien más.

0

Utilizando Cygwin, vuelva a instalar una versión dev de compás (como 0.13+). A mí me funciona con el compás 0.13.alpha.4 (Markab) Para ello:

gem uninstall compass 
gem install compass --pre --no-rdoc --no-ri