9 Stimmen

Fehler mit Compass-Umfrage unter Windows 7

Ich versuche, lokal an einer PHP-Anwendung zu arbeiten, die ich aus dem Git-Repository, das mein Partner und ich benutzen, geklont habe.

Er benutzt einen Mac, und bis jetzt habe ich an der Anwendung in einer virtuellen Ubuntu Linux Umgebung gearbeitet. Beide Umgebungen konnten Compass mit der gleichen Dateistruktur und den gleichen Dateien nutzen.

Auf Windows 7 führe ich Compass-Befehle von Cygwin aus, und das ist der Befehl, den ich benutze, um Compass vom Stammverzeichnis der Anwendung aus zu überwachen (C:/wamp/www/anwendung):

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

Wenn ich dann eine Änderung an einer .scss-Datei vornehme, erhalte ich folgenden Fehler:

ArgumentError in Zeile 716 von /usr/lib/ruby/1.8/pathname.rb: unterschiedliche Präfixe: "/ /cygdrivecwampwwwlimelightsrclimelightlimelightbundleresourcescompasssrcpartials _object.scss" und "/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

Alles, was ich durch Recherche finden konnte, ist, dass es möglicherweise damit zu tun haben könnte, dass Windows die Laufwerksnamen großschreibt, obwohl das Fehlen von Schrägstrichen im zurückgegebenen Pfad mich denken lässt, dass das Problem woanders liegen könnte.

Weiß jemand, warum ich diesen Fehler in Windows erhalten könnte, aber nicht in anderen Plattformen?

HINWEIS: Ich habe einen Übergangslösung gefunden, die darin besteht, Ruby (und Compass) über die Eingabeaufforderung von Windows zu installieren, anstelle von Cygwin, und das sollte vorerst gut funktionieren. Dennoch, wenn jemand Ideen hat, bin ich immer noch neugierig, was das Problem sein könnte.

0 Stimmen

Ich habe dasselbe Problem im Oktober '15 und kann es nicht schaffen, dies mit den hier veröffentlichten Lösungen zum Laufen zu bringen, die jetzt schon mehrere Jahre alt sind. Der 'Work-around' in deinem Edit ist jetzt ein Toter Link. Ich verwende Ruby-Version 1.9.3. Der auf "Zeile 26" angegebene Code ist nicht derselbe in meiner pathname.rb-Datei. Falls jemand aktuelle Lösungen hat, bitte um Rat...

26voto

Carlos Melo Punkte 2873

Laut diesen Commit wird dieses Problem durch eine von Compass abhängige Komponente namens FSSM verursacht. Es wird verwendet, um Dateiänderungen in Compass zu überwachen. Eine Lösungsmöglichkeit wird in diesem Kommentar beschrieben.

Es scheint, dass FSSM erkennt, dass Ruby auf einem Windows-System läuft und Pfade auf die Windows-Art behandelt (C:\blabla). Wenn Sie die Zeile 26 der Datei /lib/fssm/pathname.rb auskommentieren, funktioniert compass watch wie erwartet. Sie können auch

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

am Ende der Zeile 26 hinzufügen, um es funktionieren zu lassen.

12voto

getdave Punkte 208

Ich dachte, ich würde nur ein wenig mehr Informationen bereitstellen, um Personen zu helfen, die die Datei pathname.rb finden möchten.

Geben Sie auf der Cygwin-Eingabeaufforderung ein:

gem env

Dies bringt (wie erwartet) eine Menge Informationen über Ihre Ruby-Gems-Installation. Suchen Sie nach der Zeile, die das INSTALLATIONVERZEICHNIS angibt. Bei mir war es:

/usr/lib/ruby/gems/1.8

Navigieren Sie nun im Windows Explorer zu diesem Speicherort, ersetzen Sie jedoch "usr" durch Ihr Cygwin-Installationsverzeichnis. Daher lautet der obige Pfad:

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

Einmal an diesem Ort, navigieren Sie weiter, bis Sie das Verzeichnis des fssm-Gems finden.

In diesem [fssm]-Verzeichnis gehen Sie in Folgendes:

/lib/fssm/

...und dort sollten Sie die Datei pathname.rb finden.

Bearbeiten Sie es wie oben beschrieben und alles ist gut. Ich hoffe, das hilft.

0voto

RobertPitt Punkte 55763

0voto

James Punkte 1604

Ich bin auf denselben Fehler gestoßen, nur mit einem etwas anderen Setup. Mein Projektordner befand sich auf einem Netzlaufwerk (Ruby und Sass/Compass lokal installiert) und jedes Mal, wenn ich eine Änderung an einer .scss-Datei vornahm, stürzte compass watch mit ähnlichen Fehlern wie beim OP ab. Ich habe das Problem gelöst, indem ich mein Netzlaufwerk gemappt habe, anstatt direkt über das Netzwerk darauf zuzugreifen (auf Mein Computer geklickt und Netzlaufwerk mappen ausgewählt, um auf mein entferntes Laufwerk unter A: zugreifen zu können).

Jetzt mache ich anstelle von 'compass watch //SERVERNAME/Mein_Projekt' (ich benutze Git Bash) 'compass watch a/Mein_Projekt' und Compass stürzt nicht mehr ab.

Hoffentlich hilft das jemand anderem.

0voto

Yann VR Punkte 466

Mit Cygwin ein Compass-Entwicklungs-Release (zum Beispiel 0.13+) neu installieren. Funktioniert für mich mit Compass 0.13.alpha.4 (Markab) Um dies zu tun:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X