Путь компонентов темы

Привет!

Я хочу обновиться до последней версии, но у меня возникли проблемы с некоторыми компонентами темы.
Все они — мои собственные компоненты, и я перенёс их с GitHub на GitLab. Теперь, когда я пытаюсь обновить Discourse (не из самого интерфейса Discourse), возникают ошибки, так как они больше недоступны. Я пытался удалить их через интерфейс Discourse, но они не удаляются.
Теперь мой вопрос: где находится путь к файлам, чтобы удалить их напрямую на сервере? Я не могу их найти.

Я пробовал безопасный режим, но не могу получить доступ к форуму в этом режиме.


РЕДАКТИРОВАНИЕ:

Есть ли файл, подобный app.yml, в котором хранится список всех тем и компонентов, чтобы я мог удалить их из списка и переустановить Discourse без них?

Думаю, это именно та проблема, которую нужно решить. Правильный подход — удалить все темы и компоненты тем, которые были в старом месте, и импортировать новые из их новых местоположений.

Это невозможно, так как Discourse попадает в бесконечный цикл. Именно поэтому я спросил, как удалить их другим способом.
Я даже не могу зайти в безопасный режим.
Переустановка тоже невозможна, потому что резервная копия слишком старая.
После выполнения ./launcher rebuild app я увидел, что форум недоступен для гостей.

Так как же заставить его снова работать?

Почему? Что происходит вместо этого?

Возраст резервной копии не должен иметь значения: даже пятилетние копии восстанавливаются без проблем.

Честно говоря, похоже, что компоненты темы — это наименьшая из ваших проблем.

Если их удаление невозможно через интерфейс, то, боюсь, другие методы тоже не сработают.

Я думаю, что отключение компонентов вручную в базе данных — это решение, которое может стать крайней мерой в данной ситуации. Это сопряжено с высоким риском, но выполнимо, если других вариантов нет.

Отключенные компоненты, по крайней мере, позволят завершить перестроение, что, в свою очередь, даст доступ к административному интерфейсу для удаления и повторной установки компонентов из GitLab.

Ничего не происходит, сайт недоступен в безопасном режиме.

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

И нет, форум работал нормально, пока я не попытался выполнить обновление до удаления компонентов.

@itsbhanusharma
Спасибо за ваш ответ. Я не знал, что тема и компоненты хранятся в базе данных.

Как я могу получить доступ к БД?

РЕДАКТИРОВАТЬ:
Хорошо, я в базе данных, и, думаю, это таблица theme_settings.
Как удалить все компоненты?

Я неправильно понял ваш пост, я подумал, что вы сказали, что он слишком старый, потому что восстановление не удалось.

Они не хранятся в БД, однако их состояние активации/деактивации сохраняется непосредственно в самой БД.

Точные шаги я сейчас не помню, но недавно я исправил аналогичную нерабочую установку.

Самое главное здесь — понять, запущен ли ваш контейнер. Если он запущен, я смогу посоветовать, как попытаться отключить проблемные компоненты через базу данных.

Да, контейнер все еще работает.
Отключение компонентов очень помогло бы мне.

Они полностью хранятся в базе данных (таблицы, начинающиеся с theme*)

А как их удалить (не всё содержимое таблицы)?

По памяти — выполните это в консоли Rails. Найдите ID темы в URL при её просмотре.

t = Theme.find(123)
t.enabled = false
t.save

Ну ладно, это проблема.
Неужели нельзя использовать что-то вроде 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 я могу отключить тему, но после перезагрузки всё равно загружается старая повреждённая тема.

Theme.where(user_selectable: true).update_all(user_selectable: false)
Theme.where(auto_update: true).update_all(auto_update: false)
Theme.clear_default!

Попробуйте выполнить эти команды в консоли Rails и проверьте, сможете ли вы загрузить свой сайт после этого. Если нет, попробуйте выполнить пересборку.

Мне пришлось пересобрать его после ваших команд, и всё заработало — мой форум снова в сети! :+1: :slightly_smiling_face:

Огромное спасибо всем, кто мне помог!

Привет, @Osama. В последнее время я беспокоюсь по поводу проблемы с темой: компоненты могут сломать пересборку.

Думаю, нам нужно создать howto, чтобы решить этот вопрос.

Полагаю, что это исправление касается только случая, когда сборка сломана из-за нерабочей URL-адреса на GitHub, верно?

А если сборка сломана из-за ошибки в JavaScript, есть ли аналогичный способ отключить или удалить темы через командную строку, который стоит добавить в howto?

РЕДАКТИРОВАНИЕ: например, когда происходит сбой при включении «Альтернативных логотипов»…

Я тоже обдумываю это уже какое-то время, и мое мнение таково: это имеет смысл для некоторых сообществ, но не для всех. Некоторые сообщества рассматривают свои кастомизации и темы как фундаментальную часть идентичности сайта и хотели бы знать о проблемах с их настройками сразу после развертывания сайта. Другие же используют стандартную установку Discourse с несколькими добавленными кастомизациями или компонентами и могут спокойно прожить без них несколько дней.

Возможно, флажок «Автоматически обновлять при обновлении Discourse» по умолчанию должен быть выключен при установке новой темы или компонента? Сейчас он включен по умолчанию, и я считаю, что должен быть выключен, но это требует более широкого обсуждения…

Нет, фрагмент кода выше (особенно вторая строка) отключает автоматическое обновление при развертывании для всех установленных тем и компонентов, поэтому это должно исправить любые сбои сборки, вызванные автоматическим обновлением тем, включая ошибки в JS/CSS. В руководстве howto должна быть только вторая строка.

Я тоже только что столкнулся с этой проблемой. Если у вас есть компонент, связанный с публичным репозиторием, а затем вы делаете этот репозиторий приватным, пересборки завершаются ошибкой. Это неприятно, потому что пользователи могут внести изменения, которые сломают сайт для системных администраторов спустя месяцы.

Команды по адресу Path of theme components - #16 by Osama отлично сработали для меня. Я бы добавил инструкции о том, как войти в консоль Rails.

./launcher start app
./launcher enter app
rails c