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文件.
如上所述进行编辑,一切顺利.我希望这有帮助.