Что такое rebaking и нужно ли это при переносе сервера?

Может ли кто-нибудь подсказать информацию о функции rebake?

Нужно ли это делать после переноса сервера Discourse на новый собственный Linux-сервер?

Пересборка постов обычно используется для повторной обработки большого объема постов. Например, вы изменили доменное имя. Теперь у вас есть множество постов, содержащих ссылки на другие темы на вашем сайте, и они стали нерабочими.

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

Насколько я понимаю, поскольку вы просто переезжаете с одного сервера на другой, пересборка не требуется. Вам нужно будет обновить информацию об IP-адресе, указывающем на ваш сайт, у вашего провайдера доменных имен.

Ссылка ниже должна помочь прояснить вопрос пересборки постов:

Так что ребейкинг — это просто красивое название для поиска и замены?

Нет, вы выполняете поиск и замену (если необходимо), а затем сообщения нужно переобработать, чтобы преобразовать внесённые изменения из сырого формата в готовый, отображаемый вид.

Мне немного трудно понять разницу здесь. И я уверен, что это связано с моим бэкграундом в WordPress/LAMP как администратора и wannabe-вебмастера. Мне не хватает важной базовой информации.

Правильно ли я понимаю (не обязательно технически верно, но с точки зрения конечного пользователя), что поиск и замена изменяет данные на уровне базы данных, но это не становится видимым, пока не выполнена операция rebake?

Что ж, у меня на форуме есть всезнающий ИИ, поэтому я спросил его.

ИИ: поиск и замена против rebake

Я ввёл запрос на финском, а затем попросил перевод на английский. Это может привести к некоторым… ошибкам.

Поиск и замена против Rebake в Discourse

Поиск и замена

Функция Поиск и замена, как следует из названия, ищет и заменяет конкретные строки в содержимом форума. Это может быть полезно, например, когда меняется домен сайта, и необходимо обновить все старые доменные имена на новые. Целями для поиска и замены могут быть ссылки, слова, фразы или другие строки.

Rebake

Термин Rebake относится к процессу повторной обработки постов в Discourse. Rebake происходит, когда посты снова конвертируются из исходного текста (markdown) в финальный формат HTML. Этот процесс учитывает текущие настройки и правила стилизации. Процесс rebake можно запустить с помощью команд, таких как rake posts:rebake.

Примером такой настройки является add_rel_nofollow_to_user_content, которая добавляет атрибут «rel=nofollow» ко всем внешним ссылкам в контенте, созданном пользователями, если только это не внутренние ссылки. Если эта настройка изменена, существующие посты необходимо подвергнуть rebake, чтобы изменения вступили в силу для этих постов.

Почему только поиска и замены недостаточно?

  • Несогласованность: Простое выполнение поиска и замены может не охватить все случаи, где требуются изменения. Ссылки могут быть скрыты внутри обычного текста или в HTML-коде, который поиск и замена не обнаруживает.
  • Новые правила: Если на форуме внедряются новые правила или настройки, такие как add_rel_nofollow_to_user_content, они не применятся к существующим постам без выполнения rebake. Применение этих новых настроек к старым постам требует их rebake, чтобы новые правила были учтены.
  • HTML-форматирование: Изменение или обновление HTML-форматирования постов требует выполнения rebake, так как поиск и замена не справляется с HTML-форматированием так эффективно, как процесс rebake.

Резюме

  • Поиск и замена: Ищет и заменяет конкретные строки текста, но не гарантирует всестороннее изменение во всех случаях.
  • Rebake: Повторно обрабатывает посты в соответствии с текущими настройками и правилами, обеспечивая последовательное и всестороннее изменение всего содержимого форума.

Возможно, я понял немного лучше. Но у меня есть ощущение, что ИИ не рассказал здесь всей правды.

Одна из его функций — это специализированный «поиск и замена». Описание подходит. Некоторые плагины, например плагин для партнерских программ, требуют пересборки (rebake), если вы хотите, чтобы он применился ко всем предыдущим ссылкам на Amazon в публикациях на сайте, которые были опубликованы до установки плагина.

Если ссылка на документацию некорректно или недостаточно ясно описывает функции, команда должна добавить прямое описание.

Команда пересборки используется для X; она отличается от «поиска и замены», так как при замене шаблонов выполняет Y.

Теперь вы меня заинтриговали. Значит, есть встроенная функция «поиск и замена»? И возникает вопрос: если я редактирую публикацию, не происходит ли её переработка, так сказать, заново? Если да, то разве «поиск и замена» не должен работать как «редактирование и сохранение»?

Разве нет? :flushed_face: Иначе ИИ начнет сильно галлюцинировать.

Существует большой риск, что я всё запомнил совершенно неправильно. Прошло уже довольно много времени с тех пор, как я менял домен своего сайта. Но я почти уверен, что делал поиск и замену. Однако есть столь же большой риск, что я путаю вещи из WordPress и Discourse, и/или на самом деле пересобрал сайт, изменив все ссылки на домен.

Существует способ переопределения определённых строк в базе данных через командную строку «remap». Однако в Discourse нет функции с названием «найти и заменить». Так что, думаю, ваш ИИ галлюцинирует и путает ситуацию.

Технически в таблице базы данных posts содержимое поста хранится двумя способами:

  1. raw — это разметка Markdown, введённая пользователем.
  2. cooked — это HTML-версия контента, которая отображается на экране.

«Выпечка» (baking) поста — это процесс преобразования из raw в cooked. Мы выполняем его каждый раз при создании или редактировании поста, а также при «повторной выпечке» (rebaking).

Одной из задач процесса «выпечки» является генерация оптимизированных версий загруженных изображений. Чтобы сэкономить место, эти оптимизированные версии не включаются в резервные копии. Поэтому, если вы восстановите резервную копию и не выполните повторную выпечку, на вашем сайте будут отображаться битые изображения. Повторная выпечка необходима для регенерации этих оптимизированных изображений. Discourse автоматически позаботится об этом при восстановлении резервной копии.

Я переформулировал свой вопрос для ИИ и спросил, существует ли функция поиска и замены. На это он объяснил, как использовать remap. После этого я получил очень похожий ответ на тот, который вы дали.

Наводящие вопросы — это довольно базовый навык манипулирования ИИ. Но для этого нужно хотя бы немного разбираться в теме.

Но спасибо! Теперь я понял суть и необходимость remap и rebake.

(У нас здесь есть Development и подобные каналы… нам тоже нужна категория 101 по технологиям Discourse :woozy_face: )

Если вы переносите хостинг с discourse.org на собственный сервер, убедитесь, что ваша резервная копия включает загрузки и вложения. Пока вы не отмените аккаунт или не запросите включение загрузок в резервную копию, она будет указывать на загрузки в их бакете S3, которые будут удалены вскоре после закрытия вашего аккаунта.

Да, обычно после восстановления резервной копии необходимо пересобрать сообщения с вложениями, чтобы убедиться, что сообщения в формате Markdown преобразованы в HTML, ссылающийся на изображения на вашем собственном сервере, а не на их сервер.