我的团队正在使用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)
但是,测试环境中没有其他资产被破坏。为什么不能找到这些?
答案 0 :(得分:0)
这结果是一个命名错误。我的清单上的后缀是" .scss.css",而不是" .css.scss" (这本来是正确的。)
Asset Pipeline以最后一个后缀开头,并尝试运行与其匹配的进程,然后重复使用下一个后缀。
因此,Pipeline试图以错误的方式@import一个文件(在CSS中有一个@import指令,在SCSS中也有不同的行为),这导致了意想不到的行为。