Что-то очень похожее на это уже встречалось:
С Discourse 3.5.2 каждый раз, когда я пытаюсь установить определённый компонент (из исходного кода), устанавливается его старая версия. Я могу это подтвердить, экспортировав данные: там находится старый JavaScript. Кроме того, в инструментах разработчика браузера, если я ищу файл, он всегда показывает старую версию этого файла. Также отображается старое имя, если я собираю проект после изменения его в about.json.
Это происходит независимо от того, устанавливаю ли я компонент вручную через страницу «Компоненты» из GitHub или через app.yml.
В соответствии с Install a Theme programatically, конец моего файла app.yml выглядит так:
## Любые пользовательские команды для выполнения после сборки
run:
- exec: echo "Начало пользовательских команд"
## Если вы хотите установить адрес электронной почты в поле 'От' для первой регистрации, раскомментируйте и измените:
## После получения первого письма о регистрации закомментируйте строку обратно. Она должна выполниться только один раз.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- file:
path: /tmp/mythemes.yml
contents: |
discourse-new-topic-button:
url: https://github.com/toad/discourse-new-topic-button-theme-component.git
add_to_all_themes: true
# Старые репозитории — похоже, нам придётся создавать новый репозиторий для каждого коммита из-за какого-то странного кэширования?
#url: https://github.com/toad/discourse-new-topic-button.git
#url: https://github.com/toad/discourse-new-topic-button-theme-component.git
#url: https://github.com/toad/discourse-new-topic-button-mod.git
- exec:
cd: $home
cmd: su discourse -c 'bundle exec rake themes:install < /tmp/mythemes.yml'
- exec: echo "Конец пользовательских команд"
А вот вывод:
I, [2025-11-12T01:43:24.323446 #1] INFO -- : > echo "Начало пользовательских команд"
I, [2025-11-12T01:43:24.325106 #1] INFO -- : Начало пользовательских команд
I, [2025-11-12T01:43:24.327203 #1] INFO -- : Файл > /tmp/mythemes.yml chmod: chown:
I, [2025-11-12T01:43:24.327361 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:install < /tmp/mythemes.yml'
I, [2025-11-12T01:43:32.778093 #1] INFO -- : discourse-new-topic-button: установлено из https://github.com/toad/discourse-new-topic-button.git
Результаты:
Установлено: 1
Обновлено: 0
Ошибки: 0
Пропущено: 0
I, [2025-11-12T01:43:32.778262 #1] INFO -- : > echo "Конец пользовательских команд"
I, [2025-11-12T01:43:32.779694 #1] INFO -- : Конец пользовательских команд
Если я не удаляю компонент перед запуском пересборки, в выводе появляется «Обновлено» вместо «Установлено». В любом случае в итоге оказывается старая версия компонента.
Переход на другую страницу, перезагрузка с Shift и т. д. ничего не меняют. Перемещение в другой репозиторий также не даёт результата, так что проблема не в кэшировании по URL (два из этих репозиториев идентичны).
Я также пробовал собирать его напрямую через rake внутри контейнера.
Есть ли идеи, как отладить это? Было бы полезно видеть лог сборки, но запуск rake с флагом --verbose не даёт никакой дополнительной информации.
Моя конфигурация немного необычна (в продакшене используется rootless Docker, хотя здесь тестовый сервер).
Помогите, пожалуйста!
Похоже, что всегда собирается версия до коммита 990dec4f3e8411215122c74b2684782244eeffa2, который перенёс New Topic Button на поддержку Glimmer и станет обязательным для версии 3.6. Это приведёт к поломке при обновлении до 3.6; я пытаюсь исправить наш форк компонента New Topic Button, но похоже, что даже оригинальная версия upstream сломается.
Ещё раз: что я могу сделать для отладки? ![]()