bootstrap-sass:未定义的变量:“$ baseLineHeight”

时间:2012-03-28 21:30:40

标签: ruby-on-rails twitter-bootstrap bootstrap-sass

我使用bootstrap-sass将bootstrap集成到我的应用程序中。该应用程序在我的本地计算机上工作正常,但当我通过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

3 个答案:

答案 0 :(得分:55)

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

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

# 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以外的其他文件。

答案 1 :(得分:1)

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

这篇文章/回答应该有助Proper SCSS Asset Structure in Rails

答案 2 :(得分:1)

最初我遇到了类似的问题 Sass :: SyntaxError:未定义的变量:“$ alert-padding”。问题assets.rb文件中使用此行:

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

不知道为什么,但对我而言,它有助于将其更改为此行

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

之后问题解决了,一切都在生产中。