Какая команда/процесс собирает включенные ресурсы?

Какой процесс создает файлы стилей во время сборки, например /stylesheets/color_definitions_dark_1_1_603243e2b6c0b7xydx234the00538538bd705.css?

Я предполагаю, что это процесс упаковки (bundling)?

Что может пойти не так, если их нет?

Должны ли они создаваться при запуске ember-cli или сервера Rails?

Как мне собрать их в Docker из стандартного образа Discourse, или я должен ожидать, что они появятся просто при запуске серверов?

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

Выполнение команды bin/rake assets:precompile компилирует их заранее, что может быть полезно, если вы хотите создать оптимизированный образ Docker для развёртывания на нескольких хостах.

Спасибо, Дэвид, это значительно сузило рамки моего расследования.

Ага! Я всегда об этом задумывался.

Если они находятся в S3 и компилируются по требованию, загружаются ли они также в S3?

Ассеты, компилируемые по требованию (например, таблицы стилей, JavaScript темы, SVG-спрайты), не загружаются в S3. Они запрашиваются непосредственно из приложения (или через CDN_URL, если он настроен).

Статические элементы, такие как JS ядра/плагинов и локали, генерируются с помощью assets:precompile и гарантированно никогда не изменяются во время выполнения.

Понятно; это объясняет, почему некоторые ресурсы обслуживаются приложением. Если запущено несколько контейнеров (например, за балансировщиком нагрузки), каждый из них будет генерировать их по требованию.

Да, точно. Эти данные также часто кэшируются в PostgreSQL/Redis, поэтому их нужно генерировать только в первом контейнере приложения, получившем запрос. Остальные контейнеры могут затем недорого получить скомпилированную версию из Redis/PostgreSQL и записать её в файловую систему.

И если есть CDN, то, полагаю, им даже это может не понадобиться.

Я работаю с кем-то, у кого, кажется, есть проблема с загрузкой некоторых ресурсов (некоторые иконки отображаются очень большими), и я ищу какое-либо объяснение.