Rails:在测试环境中无法通过SCSS @import查找资产

时间:2015-10-28 20:34:15

标签: css ruby-on-rails sass asset-pipeline site-prism

我的团队正在使用SitePrism在Rails 4应用程序中进行功能测试,我们目前正在重组项目中的CSS资产。其中一个资产文件包含一个@imports来自子目录的行:

应用程序/资产/样式表/ LIB / admin.scss.css:

   @import "base/base-admin";

和app / assets / stylesheets / lib / base / base-admin.scss反过来包括:

   @import "shared/reset";
   @import "shared/colors";
   @import "shared/breakpoints";
   @import "shared/grids";

这一切在浏览器开发中都很好(我从lib/admin.css的请求中得不到任何错误,我看到CSS规则正确地应用于页面。)

但是当我运行我们的功能测试时,我得到了

Failure/Error: @page.load
ActionView::Template::Error:
  File to import not found or unreadable: base/base-admin.
  Load paths:
    /Users/duncanmalashock/ruby_projects/platform
    /Users/duncanmalashock/ruby_projects/platform/.bundle/gems/ruby/2.2.0/gems/bootstrap-sass-3.3.4.1/assets/stylesheets
 (in /Users/duncanmalashock/ruby_projects/platform/app/assets/stylesheets/lib/admin.scss.css)

但是,测试环境中没有其他资产被破坏。为什么不能找到这些?

1 个答案:

答案 0 :(得分:0)

这结果是一个命名错误。我的清单上的后缀是" .scss.css",而不是" .css.scss" (这本来是正确的。)

Asset Pipeline以最后一个后缀开头,并尝试运行与其匹配的进程,然后重复使用下一个后缀。

因此,Pipeline试图以错误的方式@import一个文件(在CSS中有一个@import指令,在SCSS中也有不同的行为),这导致了意想不到的行为。