Использование Менее в приложении Rails 3.1
Я только что обновил свое приложение до последней версии rails (3.1), и я хочу интегрировать Twitter Bootstrap в мое приложение, но он использует LESS, а не SASS, что по умолчанию используется Rails 3.1.
Как мне настроить конфигурацию Rails для использования Less вместо Sass?
Ответы
Ответ 1
Как указывает apneadiving, Sprockets (то, что Rails 3.1 использует для своего конвейера активов) поддерживает LESS.
Чтобы настроить приложение Rails для поддержки LESS, вы можете добавить драгоценный камень в группу активов вашего Gemfile:
group :assets do
gem 'less'
end
Затем запустите bundle install
, чтобы получить драгоценный камень less
и его зависимости (который, кстати, включает в себя камень libv8
, и может потребоваться некоторое время для установки).
Теперь это просто вопрос использования расширения .css.less со стилями в вашем каталоге ./app/assets/stylesheets
. Обратите внимание, что вы не получите никаких полезных сообщений, если у вас есть какие-либо синтаксические ошибки в ваших файлах LESS (это помогло мне на секунду).
Ответ 2
Для Rails 3.1 теперь мы имеем @metaskill less-rails gem, который предоставляет помощники и т.д., специфичные для Rails. Это довольно ново, но, похоже, активно поддерживается.
Вы также можете использовать less-rails-bootstrap драгоценный камень (тем же автором), чтобы вытащить библиотеки начальной загрузки.
gem 'less-rails'
gem 'less-rails-bootstrap'
Также см. мой пост здесь об использовании Bootstrap и его mixins на Rails.
Ответ 3
Довольно прямо, см. оригинальный документ здесь:
Стили с меньшим
LESS расширяет CSS с динамическим поведением, таким как переменные, mixins, операций и функций.
Если для вашего приложения доступно меньшее количество драгоценных камней, вы можете использовать LESS для писать объекты CSS в Sprockets. Заметим, что компилятор LESS написан в JavaScript, и на момент написания этой статьи на therubyracer, который внедряет среду выполнения V8 JavaScript в Ruby.
Чтобы написать атрибуты CSS с LESS, используйте расширение .css.less.