Заполнение таблицы topic_links

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

(Отслеживание кликов для импортированных постов — это «приятно иметь», а не обязательно, и хотя я не вижу ничего для этого в rake --tasks, но поскольку я также не вижу там rake search:reindex, а использую его во время импорта, подумал, что стоит проверить.)

Буду благодарен за любой ответ, даже если это просто «нет, в данный момент невозможно».

Как вы включаете ссылки? Мне казалось, что они будут созданы при формировании поста.

Вполне возможно! У меня 750 000 постов для импорта, и примерно неделя, чтобы всё завершить (из-за капризов хостинг-компании, не спрашивайте), поэтому мой текущий подход — просто вручную чистить импортированные посты с помощью регулярных выражений, вместо того чтобы проходить процесс ребейка. Если ссылки генерируются именно так, мы сможем рассмотреть возможность ребейка всего контента в будущем.

Скорее всего, это закончится плохо. Посты в какой-то момент всё равно придётся ребейкать.

Вы можете проверить один пост со ссылкой и посмотреть, исправит ли ребейк проблему. Затем можно ребейкнуть только те посты, в которых есть ссылки.

Вы начинаете с одного из существующих скриптов импорта?

Если у вас есть дамп базы данных, в худшем случае вы можете отложить запуск, разместив на некоторое время страницу-заглушку, пока завершите импорт. Гораздо хуже будет запустить некорректный импорт и позволить пользователям добавлять новые посты, так как импорт на пустой сайт выполнить гораздо проще. Ещё одно решение — запустить новый форум, пока вы завершаете работу над скриптом, а затем временно приостановить его работу, чтобы выполнить финальный импорт и добавить старые данные на новый форум.

Насколько я могу судить, всё должно быть в порядке. Форумная программа, из которой я мигрирую, позволяла пользователям вставлять в свои сообщения любые HTML-теги, поэтому мой метод заключался в удалении всех тегов, за исключением нескольких, таких как <b> (и </b>), <a>, <blockquote> и так далее. В настоящее время единственное различие между обработанными и необработанными постами в моей базе данных заключается в том, что в необработанной версии используются символы переноса строки вместо тегов p и br.

Я пометил несколько сотен постов как необработанные и только что запустил задачу rebake uncooked posts на моём тестовом сервере. Похоже, таблица topic_links действительно заполняется, так что спасибо! Проблема решена.

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

О, отлично! Это здорово! Главное, чтобы в raw-поле было что-то полезное — тогда всё будет в порядке. А пересобрать их можно в любое время после запуска в продакшн.