Недавно я настроил свои установки Discourse на использование CDN и хранение загруженных файлов и ресурсов сайта в сервисе, совместимом с S3. Пока что всё остальное работает, но наши пользовательские эмодзи не загружаются.
Таким образом, я прихожу к выводу, что, возможно, есть ошибка в обработке пользовательских эмодзи при генерации ссылок на изображения: она пропускает использование CDN, который настроен для работы перед файлами, хранящимися в S3.
Я попытался найти соответствующие темы, но нашёл только эту: Custom Emoji does not use Amazon S3, которая кажется устаревшей, так как Discourse пытается использовать S3 для обслуживания пользовательских эмодзи на моём сайте.
У меня была похожая проблема (посты с пользовательскими эмодзи не помечались для повторной обработки во время миграции на S3, если в исходном тексте поста не было других загрузок, и поэтому обработанная ссылка не указывала на CDN).
Я исправил это, удалив и снова загрузив одно из пользовательских изображений эмодзи. Это автоматически запустило задачу, которая перестроила все посты с пользовательскими эмодзи (но я уверен, что также существует rake-задача, которая может напрямую перестроить посты с пользовательскими эмодзи).
Я вижу проблему в admin/customize/emojis, а также в предпросмотре редактора постов. Кроме того, реакции-ответы на посты, созданные за последний час, не работают.
Таким образом, это затрагивает не только старые посты с эмодзи, но и новые посты, а также элементы интерфейса (выбор реакции-ответа также использует неверный URL, как и область управления эмодзи в админке).
Действительно так. Если я опубликую сообщение, эмодзи отображается в нём корректно.
Если исправление для плагина Retort аналогично тому, как исправляется административная область, я, возможно, попробую исправить плагин, так как пользовательские эмодзи реакций широко используются на моём экземпляре Discourse.
Я попытался исправить это самостоятельно после краткого ознакомления.
Кажется, проблема в том, что метод JavaScript Discourse buildEmojiUrl получает URL хранилища вместо URL CDN для пользовательских эмодзи. Похоже, что плагин retort использует то же самое.
Так что, исправив это, мы, вероятно, решим все проблемы, верно?
После этого быстрого осмотра я нашел место, где, похоже, формируются URL для пользовательских эмодзи, и изменил его на следующее:
Я протестировал это через rails console, и это, кажется, исправляет URL на моём продакшн-сайте. Поэтому я попытался развернуть это изменение там, но оно не сработало.
После неудачи я также попробовал изменить EMOJI_VERSION на 10, чтобы попытаться что-то обновить, но это тоже не помогло. Когда я выполняю launcher enter и смотрю git log, я вижу свой коммит там. Я следовал подходу, описанному здесь: