Исключение файлов из ресурсов: предварительная компиляция в рельсах

Я использую codekit для написания меньшего кода, который затем автоматически преобразуется в css.

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

если я предварительно скомпилирую активы через

rake assets:precompile

я получил

rake aborted!
cannot load such file -- less

Как исключить определенные типы папок/файлов из предварительной компиляции? (все мои файлы less находятся в app/assets/stylesheets/less, а css (который я хочу предварительно скомпилировать) находятся в app/assets/stylesheets/css

обновить

удаление application.less решает эту проблему, но как мне вообще исключить его из обработки?


person Nick Ginanto    schedule 17.10.2012    source источник


Ответы (2)


Из руководства Asset Pipeline:

Сопоставитель по умолчанию для компиляции файлов включает application.js, application.css и все файлы, отличные от JS/CSS (т. е. файлы .coffee и .scss не включаются автоматически при компиляции в JS/CSS):

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

Если у вас есть другие манифесты или отдельные таблицы стилей и файлы JavaScript для включения, вы можете добавить их в массив прекомпиляции:

config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

Итак, я бы сказал, что ваше решение состоит в том, чтобы изменить config.assets.precompile, чтобы исключить .less файлы. Может быть, что-то вроде этого (в подходящем файле среды, например config/environments/production.rb):

config.assets.precompile = [ Proc.new{ |path| !File.extname(path).in?(['.js', '.css', '.less']) }, /application.(css|js)$/ ]
person MrTheWalrus    schedule 17.10.2012
comment
Это не удается, потому что Rails не знает, что делать с файлами less. Добавление драгоценного камня less-rails в ваше приложение может устранить ошибку, но это не решение, которое вы задали в вопросе. - person Kashyap; 23.10.2012
comment
хорошо, исправление - это работает, когда я помещаю его в production.rb.. не в application.rb.. любой только с пакетом exec - person Nick Ginanto; 27.10.2012

Если ваша структура каталогов в папке app/assets такова:

application.css
/css
 (generated by code kit)
 |...home.css
 |...index.css
/less
 |...home.less (assuming this is the extension)
 |...index.less

Затем в вашем файле application.css должна быть директива, которая говорит *= require_tree .. Это говорит рельсам сканировать все файлы/каталоги и пытаться скомпилировать все файлы в один файл css.

Измените это на *= require_directory ./css, и он загрузит файлы из каталога css для компиляции.

person Kashyap    schedule 23.10.2012
comment
все то же самое :( стоит отметить, что мое дерево - это /css/application.css и /less/application.less - person Nick Ginanto; 23.10.2012
comment
Ах! Это не удастся, поскольку application.css является основным файлом, в который будут скомпилированы вспомогательные ресурсы. - person Kashyap; 23.10.2012