Asset Pipeline :: Конкретная подборка ресурсов - PullRequest
0 голосов
/ 14 октября 2011

Как я могу запускать конкретные задачи компиляции с помощью rails / asset pipe / sprockets в моем приложении?

По сути, у меня есть наборы созданных пользователем CSS для приложения; пользователи загружают css для своих частей приложения (кроме соображений безопасности и т. д., уже обработанных). Как запустить задачу для компиляции определенных наборов CSS в основной CSS? Это не проблема компиляции в реальном времени, я просто хочу взять ввод, скомпилировать это в файл и обработать это по требованию, а это скорее «Мне нужен этот набор CSS, предварительно скомпилированный по желанию, когда я хочу предварительно скомпилировать его в запущенное приложение '

Я обновляю что-то реализованное ранее, где я был в состоянии беспорядочно обслуживать сгенерированные пользователем CSS, я хотел бы интегрировать это с конвейером ресурсов. Как я могу получить больший контроль над конвейером активов? Я предполагаю, что мне нужно больше узнать о Sprockets, но мне было бы любопытно, что кто-нибудь может добавить, чтобы помочь.

1 Ответ

0 голосов
/ 15 октября 2011

CSS-файлы для каждого пользователя были бы возможны, но для использования Sprockets и конвейера по назначению для создания файлов потребуется немного возиться.

Для создания пользовательского CSS-файла выпридется:

1.Сгенерируйте манифест для пользователя.

Манифест будет включать в себя основной css через директиву звездочек и потребует self в конце вместе с пользователем css.

Файл манифеста будетнужно имя, уникальное для пользователя

2.Скомпилируйте манифест.

Вы не захотите скомпилировать их все, поэтому вам нужно написать что-нибудь, чтобы сделать именно то, что вам нужно.

3.Добавьте новый манифест в манифест конвейера

Это файл YAML, в котором содержатся сопоставления между именами манифестов и файлами в конвейере и их хэшированными аналогами.Вам нужно будет добавить к этому новый (или обновленный) хэш файла, не перекрывая другие записи.

4.Перезапустите приложение.

Это необходимо, поскольку Rails читает в манифесте конвейера при его запуске, поэтому вы не увидите никаких изменений, которые вы внесли, пока это не произойдет.

==

Тогда вы сможете ссылаться на CSS-файл на основе имени пользователя для пользователя.

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

Если вы сохраняете пользовательский CSS в базе данных, вы можете записывать пользовательские манифесты на каждомdeploy.

Другой подход - использовать конвейер для основного CSS и полностью игнорировать его для пользовательского CSS, просто делая то, что вы делаете сейчас.Используйте ссылку для конвейера CSS и секунду для пользователя CSS.Вы все еще можете минимизировать CSS при создании файла, но если о дополнительном запросе не может быть и речи, то что-то на основе вышеизложенного.

Удачи!

...