Rails Assets, можно ли предварительно скомпилировать и не скомпилировать в производственном режиме? - PullRequest
0 голосов
/ 16 марта 2020

Приложение Rails 6, рабочий режим.

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

Некоторые у меня есть заранее, и я могу предварительно скомпилировать и развернуть эти графические ресурсы с приложением в рабочем состоянии. Там нет проблем.

Однако приложение при развертывании и запуске будет время от времени импортировать больше изображений из удаленного источника в произвольном порядке c, на эти изображения также будут ссылаться в представлениях.

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

Я полагаю, я не смог предварительно скомпилировать и установите

config.assets.compile = true

, но в документации по rails говорится, что это не рекомендуется в производственном режиме.

Я уверен, что я не первый, кто пытается это сделать что-то вроде этого, и мне интересно, пропускаю ли я проверенное и испытанное решение?

Есть идеи? Заранее спасибо.

1 Ответ

1 голос
/ 16 марта 2020

Если изображения извлекаются или компилируются во время выполнения, они не принадлежат конвейеру ресурсов. Основная задача конвейера - упростить процесс развертывания и разработки, чтобы ресурсы автоматически компилировались / оптимизировались во время развертывания. Активы - это такие файлы, как CSS, JS и изображения, представляющие интерес для разработчика.

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

Как уже упоминалось в комментариях, эти изображения должны храниться отдельно от конвейера ресурсов и предпочтительно на облачной платформе, оптимизированной для доставки файлов, такой как S3, а не в вашем приложении Rails. Ваше приложение должно просто хранить URL-адреса этих файлов.

Здесь нет большой разницы между тем, как вы будете обрабатывать загрузку и импорт пользовательских файлов из удаленного источника, за исключением того, что источник немного отличается. Такие библиотеки, как ActiveStorage и CarrierWave, могут выполнять преобразования изображений во время выполнения, когда изображения импортируются.

...