Ruby on Rails
Консолидация активов
Поиск…
Вступление
Конвейент ресурсов обеспечивает структуру для конкатенации и минимизации или сжатия ресурсов JavaScript и CSS. Он также добавляет возможность писать эти активы на других языках и предварительных процессорах, таких как CoffeeScript, Sass и ERB. Это позволяет автоматически использовать активы в вашем приложении вместе с активами других драгоценных камней. Например, jquery-rails включает в себя копию jquery.js и включает функции AJAX в Rails.
Рейк-задачи
По умолчанию sprockets-rails поставляется со следующими рейк-задачами:
-
assets:clean[keep]: удалить старые скомпилированные активы -
assets:clobber: удалить скомпилированные активы -
assets:environment: загрузить среду компиляции ресурсов -
assets:precompile: Скомпилировать все активы, названные вconfig.assets.precompile
Манифестные файлы и директивы
В assets initalizer ( config/initializers/assets.rb ) несколько файлов явно определен прекомпилировать.
# Precompile additional assets.
# application.coffee, application.scss, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )
В этом примере application.coffee и application.scss называются так называемыми файлами манифеста. Эти файлы должны использоваться для включения других ресурсов JavaScript или CSS. Доступны следующие команды:
-
require <path>:requireдирективных функций , аналогичных рубин собственногоrequire. Он предоставляет способ объявить зависимость от файла в вашем пути и гарантирует, что он будет загружен только один раз перед исходным файлом. -
require_directory <path>: требует наличия всех файлов внутри одного каталога. Он похож наpath/*поскольку он не соответствует вложенным каталогам. -
require_tree <path>: требует наличия всех вложенных файлов в каталоге. Его глобальным эквивалентом являетсяpath/**/*. -
require_self: заставляет тело текущего файла , который будет вставлен перед любой последующийrequireдирективы. Полезно в CSS-файлах, где общий индексный файл содержит глобальные стили, которые необходимо определить до загрузки других зависимостей. -
stub <path>: удалить файл из включенного -
depend_on <path>: позволяет указать зависимость от файла без его включения. Это используется для кеширования. Любые изменения, внесенные в файл зависимостей, аннулируют кеш исходного файла.
Файл application.scss может выглядеть так:
/*
*= require bootstrap
*= require_directory .
*= require_self
*/
Другим примером является файл application.coffee . Здесь с включением jquery и Turbolinks :
#= require jquery2
#= require jquery_ujs
#= require turbolinks
#= require_tree .
Если вы не используете CoffeeScript, но обычный JavaScript, синтаксис будет выглядеть так:
//= require jquery2
//= require jquery_ujs
//= require turbolinks
//= require_tree .
Основное использование
Существует два основных способа использования конвейера активов:
При запуске сервера в режиме разработки он автоматически обрабатывает и подготавливает ваши активы «на лету».
В режиме производства вы, вероятно, будете использовать его для предварительной обработки, модификации и сжатия и компиляции ваших активов. Вы можете сделать это, выполнив следующую команду:
bundle exec rake assets:precompile