ruby - Play 中的 sass 插件!框架 2.0.4 抛出错误

标签 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。

我可以告诉你,我们在使用 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/

相关文章:

Ruby:Proc.new { 'waffles' } 与 proc { 'waffles' }

ruby - 创建一个可连接多个其他文件的 XML 文件

validation - 使用 Play Framework 进行客户端/服务器端验证

scala - 将订户建模为 Akka Actor 的正确方法

CSS:悬停时导航项顶部的边框

ruby-on-rails - 在 Ruby 中将排序实现为类方法

ruby - 使用 thin & eventmachine 的 HTTP 流式传输

scala:定义一个Type,该Type已经定义了某种隐式

Angular 4 + Material 2 SASS 编译错误 "File to import not found or unreadable"

css - SCSS 的 IntelliJ FileWatcher 不工作