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]*\..*/]
После этого проблема была решена, и все работало в производстве.