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