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]*\..*/]
之后问题解决了,一切都在生产中。