Rails: 在测试环境中无法通过 SCSS @import 找到资产
Rails: Can't find assets via SCSS @import in test environment
我的团队正在 Rails 4 应用程序中使用 SitePrism 进行功能测试,我们目前正在重组项目中的 CSS 资产。其中一个资产文件包含一行 @imports from a subdirectory:
app/assets/stylesheets/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)
但是,none 的其他资产在测试环境中损坏。为什么找不到这些?
这原来是一个命名错误。我清单上的后缀是“.scss.css”,而不是“.css.scss”(应该是正确的)。
Asset Pipeline 从最后一个后缀开始,并尝试 运行 匹配它的进程,然后用下一个后缀重复。
所以管道试图以错误的方式@import 文件(在 CSS 中有一个 @import 指令,在 SCSS 中也有不同的行为),这导致了意外行为。
我的团队正在 Rails 4 应用程序中使用 SitePrism 进行功能测试,我们目前正在重组项目中的 CSS 资产。其中一个资产文件包含一行 @imports from a subdirectory:
app/assets/stylesheets/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)
但是,none 的其他资产在测试环境中损坏。为什么找不到这些?
这原来是一个命名错误。我清单上的后缀是“.scss.css”,而不是“.css.scss”(应该是正确的)。
Asset Pipeline 从最后一个后缀开始,并尝试 运行 匹配它的进程,然后用下一个后缀重复。
所以管道试图以错误的方式@import 文件(在 CSS 中有一个 @import 指令,在 SCSS 中也有不同的行为),这导致了意外行为。