rails 3.1 персонализиране на зъбни колела предварително компилиране на активи

Опитвам се да персонализирам кои активи се компилират предварително. В производството искам само application.js и applicaiton.css да бъдат компилирани, а не всички следващи файлове, които са включени.

Например, давайки следните файлове, искам само един файл (appliation.css) да бъде изведен, когато стартирам задачата за прекомпилиране на рейк

##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