1

我们已经使用 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

我该如何解决这个问题?

4

3 回答 3

3

我从来都不喜欢补丁或变通方法,所以我会尽力分析这里发生的事情:

根据您在上面的帖子中突出显示的错误消息,这里对播放框架没什么兴趣,所以我们将从那里开始。

我们有 ruby​​ 被 sass 编译器调用,它抱怨加载错误。很公平。乍一看,由于 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。

我希望这有帮助!

于 2014-01-23T07:02:49.497 回答
0

这似乎不适用于使用 litola sass-plugin 0.4.0 的 play 2.3.x。如果我将 sass 目录放在我的项目中。target/scala-2.11/classes/public/xxx 下的输出 css 文件大小均为 0。有什么建议么?还在调查。

已达到不需要将 sass windows 脚本复制到工作区的解决方案。此插件有效:https ://github.com/ShaggyYeti/sbt-sass在 play 2.3.x 下。量子点

于 2014-12-17T14:33:24.003 回答
0

对于遇到此问题并需要解决方法的所有人,这就是我们发现的

该错误Sass compiler: ruby.exe: No such file or directory -- d:/workspace/our-project/sass (LoadError)意味着 ruby​​ 正在寻找项目根目录中命名的文件(而不是文件夹) 。sass其原因尚不清楚,如果有人可以贡献,仍然需要解释。

这个sass文件是一个 ruby​​ 文件,应该存在的文件c:\Ruby187\bin\sass基本上是 sass 插件 ruby​​ 代码。

因此,解决此问题的快速解决方法是将该文件复制到您的根目录下。

这为我们解决了。

我仍然需要解释为什么会发生这种情况。

于 2013-10-01T07:29:25.213 回答