Bootstrap-sass: переменная Undefined: "$ baseLineHeight"

Я включил загрузку в свое приложение, используя 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 файле, которую пытают предварительно скомпилировать.

Что-то не загружается правильно. Любые идеи, что это может быть?

Edit

Полная трасса здесь https://gist.github.com/2233071

Изменить 2

Добавлены application.rb и production.rb в gist

Ответ 1

Вы отредактировали файл 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.

Ответ 2

Вам нужно убедиться, что импорт всех ваших css выполняется в правильном порядке. Для работы переменных он должен быть одним из первых нескольких загружаемых файлов css.

Этот пост/ответ должен помочь Правильная структура активов SCSS в Rails

Ответ 3

Первоначально у меня была аналогичная проблема Sass:: SyntaxError: переменная Undefined: "$ alert-padding". проблема с этой строкой в ​​файле assets.rb:

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

Не знаю, почему, но для меня это помогло изменить его на эту строку

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

После этого проблема была решена, и все работало в производстве.