Asset Pipeline — фреймворк для сборки и сжатия JS и CSS, который представляет собой один из основных
аргументов неоспоримой крутости версии 3.1 рельсов. Он добавляет возможность "из коробки" писать
их на других языках, таких как CoffeScript, SASS и ERB.
Основная функция этой библиотеки — объединение всеx подключаемых файлов (assets) в один,
что ускоряет загрузку страницы браузером.
Вторая по списку, но отнюдь не менее важная, функция библиотеки - возможность минимизации и сжатия
полученных файлов. С таблицами стилей все просто - удаляет лишние пробелы и переноса строк. Для JS логика
сжатия более продвинута. Вы можете выбрать любой компрессор джаваскрипта из существующих (uglifier, closure-compiler,
therubyracer или yui-compressor) или создать свой собственный.
Использовать библиотеку достаточно просто. В прежних версиях Rails, скрипты и стили приложения хранились
в поддиректориях public — javascripts
, stylesheets
, images
. Теперь предпочтительнеe хранить их в app/assets
,
и все эти файлы будут обслужены Sprockets. Кроме того, assets можно в разных директориях: app/assets
, lib/assets
или vendor/assets
.
app/assets
— для файлов вашего приложения
lib/assets
— для ваших собственных библиотек
vendor/assets
— для файлов стороннего происхождения, например jQuery-плагина
Также принимаем во внимание, что пути к картинкам и другим статическим файлам поменяются. Поэтому необходимо работать с ними через специальные хелперы (например, asset-path
).
Теперь в Rails встроен rake task assets:precompile
для предварительной сборки файлов. Это поможет заранее собрать/скомпилировать их и уменьшить нагрузку на высоко-посещаемых сайтах.
При деплое с капистрано нужно раскомментировать строку load 'deploy/assets'
в Capfile и настроить http-сервер на статическое обслуживание public/assets
(пример конфига).
Напоследок стоит заметить, что при переходе на 3.1 рельсы вовсе не обязательно использовать Asset Pipeline. Можно продолжать использовать свой любимый jammit или вообще жить без всех этих премудростей. Достаточно лишь отключить включенный по-умолчанию параметр в настройках:
config.assets.enabled=false
Достаточно плотно с переходом на Asset Pipeline поработали Дмитрий Кириенко и Алексей Осипенко. Им можно задать вопросы, если такие возникнут.
Комментарии
Конечно же, обсудить и сказать не сказанное можно на отдельной странице комментариев к этому выпуску.