Я хочу обновиться до последней версии, но у меня возникли проблемы с некоторыми компонентами темы.
Все они — мои собственные компоненты, и я перенёс их с GitHub на GitLab. Теперь, когда я пытаюсь обновить Discourse (не из самого интерфейса Discourse), возникают ошибки, так как они больше недоступны. Я пытался удалить их через интерфейс Discourse, но они не удаляются.
Теперь мой вопрос: где находится путь к файлам, чтобы удалить их напрямую на сервере? Я не могу их найти.
Я пробовал безопасный режим, но не могу получить доступ к форуму в этом режиме.
РЕДАКТИРОВАНИЕ:
Есть ли файл, подобный app.yml, в котором хранится список всех тем и компонентов, чтобы я мог удалить их из списка и переустановить Discourse без них?
Думаю, это именно та проблема, которую нужно решить. Правильный подход — удалить все темы и компоненты тем, которые были в старом месте, и импортировать новые из их новых местоположений.
Это невозможно, так как Discourse попадает в бесконечный цикл. Именно поэтому я спросил, как удалить их другим способом.
Я даже не могу зайти в безопасный режим.
Переустановка тоже невозможна, потому что резервная копия слишком старая.
После выполнения ./launcher rebuild app я увидел, что форум недоступен для гостей.
Я думаю, что отключение компонентов вручную в базе данных — это решение, которое может стать крайней мерой в данной ситуации. Это сопряжено с высоким риском, но выполнимо, если других вариантов нет.
Отключенные компоненты, по крайней мере, позволят завершить перестроение, что, в свою очередь, даст доступ к административному интерфейсу для удаления и повторной установки компонентов из GitLab.
Они не хранятся в БД, однако их состояние активации/деактивации сохраняется непосредственно в самой БД.
Точные шаги я сейчас не помню, но недавно я исправил аналогичную нерабочую установку.
Самое главное здесь — понять, запущен ли ваш контейнер. Если он запущен, я смогу посоветовать, как попытаться отключить проблемные компоненты через базу данных.
Ну ладно, это проблема.
Неужели нельзя использовать что-то вроде pgAdmin для прямого доступа к базе данных?
Я не знаю ID темы и компонентов, так как больше не имею доступа к панели администратора.
Редактирование:
Я выяснил ID темы и компонентов.
Отключение их не помогает, так как удалить их через rails c? Я даже пытался избавиться от них с помощью rake, но rake тоже не может их удалить.
rake themes:uninstall https://github.com/link/to/git.git
rake aborted!
Не удалось выполнить задачу 'themes:uninstall' (см. список доступных задач с помощью `rake --tasks`)
Возможно, вы имели в виду: themes:install
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)
Или какая правильная команда для удаления элементов через rake?
Я получаю список команд с помощью rake --tasks и rake -AT, но там нет команды для удаления темы или компонента.
С помощью rails c я могу отключить тему, но после перезагрузки всё равно загружается старая повреждённая тема.
Попробуйте выполнить эти команды в консоли Rails и проверьте, сможете ли вы загрузить свой сайт после этого. Если нет, попробуйте выполнить пересборку.
Привет, @Osama. В последнее время я беспокоюсь по поводу проблемы с темой: компоненты могут сломать пересборку.
Думаю, нам нужно создать howto, чтобы решить этот вопрос.
Полагаю, что это исправление касается только случая, когда сборка сломана из-за нерабочей URL-адреса на GitHub, верно?
А если сборка сломана из-за ошибки в JavaScript, есть ли аналогичный способ отключить или удалить темы через командную строку, который стоит добавить в howto?
РЕДАКТИРОВАНИЕ: например, когда происходит сбой при включении «Альтернативных логотипов»…
Я тоже обдумываю это уже какое-то время, и мое мнение таково: это имеет смысл для некоторых сообществ, но не для всех. Некоторые сообщества рассматривают свои кастомизации и темы как фундаментальную часть идентичности сайта и хотели бы знать о проблемах с их настройками сразу после развертывания сайта. Другие же используют стандартную установку Discourse с несколькими добавленными кастомизациями или компонентами и могут спокойно прожить без них несколько дней.
Возможно, флажок «Автоматически обновлять при обновлении Discourse» по умолчанию должен быть выключен при установке новой темы или компонента? Сейчас он включен по умолчанию, и я считаю, что должен быть выключен, но это требует более широкого обсуждения…
Нет, фрагмент кода выше (особенно вторая строка) отключает автоматическое обновление при развертывании для всех установленных тем и компонентов, поэтому это должно исправить любые сбои сборки, вызванные автоматическим обновлением тем, включая ошибки в JS/CSS. В руководстве howto должна быть только вторая строка.
Я тоже только что столкнулся с этой проблемой. Если у вас есть компонент, связанный с публичным репозиторием, а затем вы делаете этот репозиторий приватным, пересборки завершаются ошибкой. Это неприятно, потому что пользователи могут внести изменения, которые сломают сайт для системных администраторов спустя месяцы.