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

我使用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中

您已经编辑了您的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所需的其他文件。

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

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

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

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

不知道为什么,但对我而言,它有助于改变它

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

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