17

我已经使用 bootstrap-sass 将引导程序集成到我的应用程序中。该应用程序在我的本地计算机上运行良好,但是当我通过 capistrano 进行部署时,出现此错误:

Undefined variable: "$baseLineHeight".
(in /var/www/CollegeSportsBlueBook/shared/bundle/ruby/1.9.1/gems/bootstrap-sass-2.0.1/vendor/assets/stylesheets/bootstrap/_accordion.scss)

当 capistrano 试图奔跑时assets:precompile

我认为这个变量会引发错误,因为它是第一个尝试预编译的 scss 文件中的第一个变量。

有些东西加载不正确。任何想法可能是什么?

编辑

此处的完整跟踪https://gist.github.com/2233071

编辑 2

将 application.rb 和 production.rb 添加到 gist

4

3 回答 3

55

您已经编辑了production.rb文件,以便 Rails 将尝试预编译所有 CSS/JS 文件(第 48 行)。

默认情况下,Rails 只会预编译application.css(.scss)。通过向您添加通配符选择器,config.assets.precompile您要求 Rails 预编译应用程序中的每个css 资产,包括 Sass 部分。自然,这可能不是您想要的行为。

# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( *.css *.js )

因此,Rails 将遍历每个 css 资产,编译它们。碰巧这_accordion.css.scss是它遇到的第一个 Bootstrap 资产,Rails 将首先尝试编译它。_accordion不是独立的,并且需要在它之前加载一些文件,因此会出现错误。无论如何,它不应该被编译为单独的文件。

您需要更改您config.assets.precompile以仅添加除application.css/application.js.

于 2012-03-31T13:42:22.473 回答
1

您需要确保所有 css 的导入都以正确的顺序完成。要使变量起作用,它必须是要加载的前几个 css 文件之一。

这篇文章/答案应该有助于Rails 中正确的 SCSS 资产结构

于 2012-03-29T17:11:19.410 回答
1

最初我遇到了类似的问题 Sass::SyntaxError: Undefined variable: "$alert-padding"。文件中这一行的问题assets.rb

Rails.application.config.assets.precompile += [/.*\.css/] 

不知道为什么,但对我来说它有助于将其更改为这条线

Rails.application.config.assets.precompile += [/^[-_a-zA-Z0-9]*\..*/]

之后问题得到解决,一切都在生产中正常工作。

于 2016-05-17T08:39:53.723 回答