bootstrap-sass: неопределенная переменная: "$ baseLineHeight" - PullRequest
17 голосов
/ 29 марта 2012

Я встроил загрузчик в свое приложение, используя 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)

Когда капистрано пытается бежать assets:precompile

Я думаю, что эта переменная выдает ошибку, потому что это первая переменная в первом файле scss, которая пытается прекомпилироваться.

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

Редактировать

Полный след здесь https://gist.github.com/2233071

Редактировать 2

Добавлены application.rb и production.rb в суть

Ответы [ 3 ]

55 голосов
/ 31 марта 2012

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

1 голос
/ 17 мая 2016

Изначально у меня была похожая проблема Sass :: SyntaxError: Неопределенная переменная: "$ alert-padding". проблема с этой строкой в ​​файле assets.rb:

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

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

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

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

1 голос
/ 29 марта 2012

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

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

...