rails 3.1 настроить sprockets для предварительной компиляции активов

Я пытаюсь настроить, какие активы будут предварительно скомпилированы. В производстве я хочу, чтобы скомпилировались только application.js и applicaiton.css, а не все последующие файлы, которые включены.

Например, предоставляя следующие файлы, я хочу, чтобы только один файл (appliation.css) выводился, когда я запускаю задачу предварительной компиляции rake

##application.css
//include components/form.elements
//include components/lists

По умолчанию все ресурсы в каталоге ресурсов предварительно компилируются, и это довольно беспорядочно.

Исправление EDIT: по умолчанию все файлы, отличные от js и css, предварительно компилируются в каталоге активов. Однако, если у вас есть такой файл, как form.elements.js, sprockets предварительно скомпилирует его, думая, что это файл, отличный от js/css.


person Aaron Renoir    schedule 21.09.2011    source источник


Ответы (2)


Ознакомьтесь с документацией по sprockets, она достаточно обширна и хорошо написана.

Для вашей конкретной проблемы следующий application.css будет включать только каталоги components/form_elements и components/lists рекурсивно:

/*
 *= require_tree components/form_elements
 *= require_tree components/lists
*/

Если form_elements и lists являются файлами css, просто замените require_tree на require.

person Benoit Garret    schedule 21.09.2011

Параметры прекомпиляции по умолчанию работают до тех пор, пока у вас нет файлов с дополнительными точками. как (jquery.treeview.js)

Я смог заставить свои ресурсы компилироваться так, как я хотел, явно указав отдельные файлы, которые я хотел скомпилировать.

 config.assets.precompile = [ 'application.css' ]

теперь в папке общедоступных активов есть только один файл, который включает в себя все дополнительное содержимое файла, свернутое в минимум.

РЕДАКТИРОВАТЬ

Опция предварительной компиляции Rails по умолчанию была изменена на

[ Proc.new{ |path| !File.extname(path).in?(['.js', '.css']) }, /application.(css|js)$/ ]

поэтому файлы с дополнительными точками теперь будут правильно компилироваться

person Aaron Renoir    schedule 22.09.2011