我们已经使用 play!framework 2.0.4 一年了,还有 SASS
。
我们有一个新的项目成员,他从 sass 中得到了一个非常奇怪的错误。
Sass compiler: ruby.exe: No such file or directory -- d:/workspace/our-project/sass (LoadError)
计算机运行的是 Windows 7。
我可以告诉你,我们在使用 ruby 时也遇到了问题。
由于某种原因 irb
命令失败。但是我们通过将 HOME
环境变量的值从 %USERPROFILE%
更改为 c:\Users\name
我在谷歌群里也看到过这个问题,但是没有解决方案
https://groups.google.com/d/msg/play-framework/j1npLLQlj1o/POOlePhJv1QJ
我该如何解决?
最佳答案
我从来都不喜欢补丁或变通方法,所以我会尽力分析这里发生的事情:
根据您在上面的帖子中突出显示的错误消息,这里对 Play Framework 没什么兴趣,所以我们将从那里开始。
我们有 sass 编译器调用 ruby,它提示加载错误。很公平。乍一看,由于 ruby.exe 错误消息,人们可能会认为 ruby 配置是罪魁祸首。然而,我们发现它确实在寻找一个文件,即sass.bat,于是好奇的目光将我带到了那里。
因此,我们发现批处理文件包含以下内容:
1 @ECHO OFF
2 IF NOT "%~f0" == "~f0" GOTO :WinNT
3 @"ruby.exe" "C:/Ruby193/bin/sass" %1 %2 %3 %4 %5 %6 %7 %8 %9
4 GOTO :EOF
5 :WinNT
6 @"ruby.exe" "%~dpn0" %*
所以这个脚本中有 6 个命令行,还不错。通过检查,我注意到第 2 行有一个 if 条件,该条件依赖于获取正在执行的所有参数或全名。在 Windows 7 上测试时,条件似乎评估为假,所以我们总是在第 6 行结束。这个问题的关键是在 Windows 上运行 Ruby 的机器。
本质上,我们在脚本中有一个“跳转子程序”或 GOTO 指令来命中 WinNT,因此我们在当前目录中查找 sass.bat,从而产生您当前的错误。
这是瘦子:您可以通过以下方式在 sass.bat 文件的第 2 行中注释 if 条件
REM IF NOT "%~f0" == "~f0" GOTO :WinNT
或者您可以使第 6 行与第 3 行相同。进行修改后,您的 sass 编译器将知道在哪里可以找到 Ruby SASS。
我喜欢 Windows,但这在 OS X 上不是问题,因为 Ruby 是预装的。有些人试图为 ruby/sass 创建别名,但问题的根源不是 PATH 环境变量。
在我的示例中,Ruby 安装在 C: 上,使用版本 1.93,但同样适用于包括 v2 在内的所有最新版本。
希望对您有所帮助!
关于ruby - Play 中的 sass 插件!框架 2.0.4 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19091096/