在Windows 7上使用Compass轮询时出错

Mat*_*ick 9 ruby cygwin windows-7 compass-sass

我试图在本地工作的PHP应用程序,我从我的合作伙伴和我使用的Git存储库克隆.

他使用Mac,直到现在我一直在虚拟Ubuntu Linux环境中处理应用程序.这两种环境都能够使用具有相同文件结构和文件的Compass轮询.

在Windows 7上,我从Cygwin运行Compass命令,这是我用来从应用程序的根目录(C:/ wamp/www/application)进行Compass轮询的命令:

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中收到此错误,但不是其他平台?

注意:我找到了一个解决方案,涉及通过Windows'命令提示符而不是Cygwin安装ruby(和指南针),这应该可以正常工作.不过,如果有人有想法,我仍然对这个问题可能是多么好奇.

EdM*_*elo 26

根据此提交,这是由称为FSSM的罗盘依赖性引起的问题.它用于监视罗盘中的文件更改.此注释中描述了一种解决方法.

似乎FSSM检测到ruby在Windows框中运行,并以Windows的方式处理路径(C:\blabla).注释掉文件的第26行<fssm_gem_path>/lib/fssm/pathname.rb可以compass watch按预期工作.你也可以添加

unless path[0, 1] == File::SEPARATOR
Run Code Online (Sandbox Code Playgroud)

到第26行的末尾,使其工作.


小智 12

我想我只是提供一些信息来帮助人们找到pathname.rb文件.

在cygwin提示符下键入:

gem env
Run Code Online (Sandbox Code Playgroud)

这(不出所料)会带来大量关于Ruby Gems安装的信息.查找指定INSTALLATION DIRECTORY的行.我的是:

/usr/lib/ruby/gems/1.8
Run Code Online (Sandbox Code Playgroud)

现在在Windows资源管理器中导航到此位置,但将"usr"替换为您的cygwin安装目录.因此,上述路径变为:

C:\cygwin\lib\ruby\gems\1.8
Run Code Online (Sandbox Code Playgroud)

一旦进入此位置,向下钻取,直到遇到fssm gem目录.

在这个[fssm]目录中进入:

/lib/fssm/
Run Code Online (Sandbox Code Playgroud)

...在那里你应该找到pathname.rb文件.

如上所述进行编辑,一切顺利.我希望这有帮助.