Я столкнулся со странным поведением задачи assets:precompile
или в по крайней мере перед чем-то, что я не совсем понимаю.
Итак, я использую Rails 3.1.3, Sprockets 2.0.3, Less 2.0.11 для своего веб-приложения, плюс я полагаюсь на Bootstrap для макета, поэтому я также использую less-rails 2.1.8 и меньше. рельсы-бутстрап 2.0.8. Я настроил стиль, как говорится здесь.
Конфигурация моих ассетов следующая:
stylesheets
|--application.css.scss
|--custom-style/
|--variables.less
|--mixins.less
|--buttons.less
|--custom-style.css.less
В application.css.scss я делаю
//=require custom-style
И в пользовательском стиле делаю
@import "twitter/bootstrap/reset";
//@import "twitter/bootstrap/variables"; // Modify this for custom colors, font-sizes, etc
@import "custom-style/variables";
//@import "twitter/bootstrap/mixins";
@import "custom-style/mixins";
// And all the other standar twitter/bootstrap imports...
// Other custom-style files to import
@import "custom-style/buttons"
//...
// And other rules here
//...
Наконец, в buttons.less
Я использую некоторые переменные и миксины, определенные в файлах variable.less
и mixins.less
Bootstrap, @white
и .buttonBackground
, чтобы быть более конкретными.
Если я запускаю bundle exec rake assets:precompile
с приведенной выше конфигурацией, задача завершается с ошибкой, и я получаю эту ошибку:
$ bundle exec rake assets:precompile
/usr/local/rvm/rubies/ruby-1.9.3-p0/bin/ruby /usr/local/rvm/gems/ruby-1.9.3-p0/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
.buttonBackground is undefined
Но если я это делаю, меняется
buttons.less --> buttons.css.less
@import "buttons" --> @import "buttons.css.less"
Все работает нормально! !
Это как-то связано с областью действия less переменных и функций при работе с вложенным импортом? Или что-то, что связано с порядком, в котором парсер меньшего размера или Sprockets обрабатывает дерево импорта?
Я что-то упустил или делаю что-то не так?
Спасибо :)
Примечание: Я получаю ошибку даже с исходными файлами переменных и примесей, так что это не связано с переопределениями, сделанными в них.