播放sass插件!framework 2.0.4抛出错误

时间:2013-09-30 09:45:02

标签: ruby playframework-2.0 sass jruby

我们一直在使用play!framework 2.0.4一年,SASS

我们有了一个新的项目成员,他从sass那里得到了一个非常奇怪的错误。

Sass compiler: ruby.exe: No such file or directory -- d:/workspace/our-project/sass (LoadError)

计算机正在运行Windows 7。

我可以告诉你我们也遇到了红宝石的问题。

由于某种原因irb命令失败。但我们通过将HOME环境变量的值从%USERPROFILE%更改为c:\Users\name来修复此问题

我也在谷歌群组中看到了这个问题,但没有解决方案

https://groups.google.com/d/msg/play-framework/j1npLLQlj1o/POOlePhJv1QJ

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

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

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

我们有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。

我希望这有帮助!

答案 1 :(得分: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代码。

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

这为我们解决了这个问题。

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

答案 2 :(得分:0)

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

已达到解决方案,无需将sass windows脚本复制到工作区。 这个插件有效:https://github.com/ShaggyYeti/sbt-sass正在播放2.3.x. QED