Миниатюры чата обходят s3_cdn_url и используют прямые URL-адреса S3-бакетов

ok для сайтов с добавленными пользовательскими эмодзи, они теперь будут сломаны в чате, так как исправление объединено.

в отличие от стандартных изображений в постах (которые можно исправить с помощью rake posts:rebake), пользовательские эмодзи в чате передаются на фронтенд динамически через /site.json.

если ваша база данных содержит URL-адреса S3, в которых отсутствует протокол (например, //bucket.endpoint...) или используется виртуальный хост, который не полностью соответствует переменным среды в вашем app.yml, внутренний CDN-реплейсер Discourse молча терпит неудачу. сырой URL-адрес бакета передается в браузер, что приводит к поломке пользовательских эмодзи в чате.

как исправить:

чтобы исправить это навсегда, вам нужно принудительно переназначить сырые URL-адреса бакета на URL-адрес вашего CDN в базе данных, а затем очистить кэш сайта, чтобы /site.json перегенерировался.

1. войдите в контейнер:

войдите на свой сервер через ssh и войдите в контейнер Discourse (обычно app или web_only, если у вас двухконтейнерная настройка).

cd /var/discourse
./launcher enter app

2. переназначьте URL-адреса:

запустите встроенный инструмент Discourse remap. вы должны запустить его дважды, чтобы поймать как вариант https://, так и безпротокольный вариант //, который иногда оставляет скрипт миграции.

замените заполнители на ваши фактические URL-адреса сырого бакета и фактический URL-адрес CDN:

# исправьте стандартные URL-адреса https://
discourse remap "https://<your-bucket>.<your-endpoint>.com" "https://cdn.your-domain.com"

# исправьте безпротокольные URL-адреса // (это тот, который обычно ломает пользовательские эмодзи)
discourse remap "//<your-bucket>.<your-endpoint>.com" "https://cdn.your-domain.com"

3. очистите кэш

поскольку /site.json сильно кэшируется, вам необходимо очистить кэш rails, чтобы принудительно заставить форум обслуживать новые URL-адреса:

откройте консоль rails:

rails c

запустите эти команды:

Rails.cache.clear
Site.clear_cache
exit

4. обновите страницу

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

2 лайка