我正在尝试本地处理一个PHP应用程序,该程序是从我和合作伙伴使用的Git存储库克隆而来。
他使用Mac,而我一直在虚拟Ubuntu Linux环境中处理应用程序。两个环境都能够使用相同的文件结构和文件进行Compass轮询。
在Windows 7上,我通过Cygwin运行Compass命令,并使用以下命令让Compass从应用程序的根目录(C:/wamp/www/application)轮询:
compass watch --trace src/Application/ApplicationBundle/Resources/compass/
然后,当我对.scss文件进行更改时,我会收到以下错误:
在 /usr/lib/ruby/1.8/pathname.rb 的第716行发生了 ArgumentError 错误: 不同的前缀:/cygdrivecwampwwwlimelightsrclimelightlimelightbundleresourcescompasssrcpartials_object.scss 和 /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行执行了 split_path 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb 的第69行执行了 run_callback 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb 的第55行执行了 callback_action 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb 的第35行执行了 update 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第39行执行了 modified 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第37行执行了 each 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第37行执行了 modified 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第18行执行了 refresh 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第17行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第17行执行了 each 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第17行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第15行执行了 loop 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第15行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/monitor.rb 的第26行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm.rb 的第20行执行了 monitor 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/watch_project.rb 的第86行执行了 perform 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/base.rb 的第18行执行了 execute 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/project_base.rb 的第19行执行了 execute 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb 的第43行执行了 perform! 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb 的第15行执行了 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行调用了 call 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass 的第39行发生了错误,在 /usr/bin/compass 的第19行加载了文件,在 /usr/bin/compass 的第19行发生了错误。
我通过搜索只发现这可能与Windows将驱动器名称大写有关,尽管返回路径中缺少斜杠,这使我认为问题可能出在其他地方。 有人知道为什么在Windows上会收到此错误,但在其他平台上却没有?
注意:我找到了一个解决方法,涉及通过Windows命令提示符而不是Cygwin安装ruby(和compass),现在应该可以正常工作。 不过,如果有人有想法,我仍然很好奇问题可能是什么。
他使用Mac,而我一直在虚拟Ubuntu Linux环境中处理应用程序。两个环境都能够使用相同的文件结构和文件进行Compass轮询。
在Windows 7上,我通过Cygwin运行Compass命令,并使用以下命令让Compass从应用程序的根目录(C:/wamp/www/application)轮询:
compass watch --trace src/Application/ApplicationBundle/Resources/compass/
然后,当我对.scss文件进行更改时,我会收到以下错误:
在 /usr/lib/ruby/1.8/pathname.rb 的第716行发生了 ArgumentError 错误: 不同的前缀:/cygdrivecwampwwwlimelightsrclimelightlimelightbundleresourcescompasssrcpartials_object.scss 和 /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行执行了 split_path 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb 的第69行执行了 run_callback 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb 的第55行执行了 callback_action 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb 的第35行执行了 update 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第39行执行了 modified 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第37行执行了 each 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第37行执行了 modified 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb 的第18行执行了 refresh 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第17行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第17行执行了 each 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第17行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第15行执行了 loop 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb 的第15行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/monitor.rb 的第26行执行了 run 方法,在 /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm.rb 的第20行执行了 monitor 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/watch_project.rb 的第86行执行了 perform 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/base.rb 的第18行执行了 execute 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/project_base.rb 的第19行执行了 execute 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb 的第43行执行了 perform! 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb 的第15行执行了 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行调用了 call 方法,在 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass 的第39行发生了错误,在 /usr/bin/compass 的第19行加载了文件,在 /usr/bin/compass 的第19行发生了错误。
我通过搜索只发现这可能与Windows将驱动器名称大写有关,尽管返回路径中缺少斜杠,这使我认为问题可能出在其他地方。 有人知道为什么在Windows上会收到此错误,但在其他平台上却没有?
注意:我找到了一个解决方法,涉及通过Windows命令提示符而不是Cygwin安装ruby(和compass),现在应该可以正常工作。 不过,如果有人有想法,我仍然很好奇问题可能是什么。