Migrate a vBulletin 4 forum to Discourse

О.

Только я подумал, что вот-вот добьюсь успеха :sob:

Работает :smiling_face_with_sunglasses:

Честно говоря, мне помог chatgpt. Нужно было заменить:

def parse_timestamp(timestamp)
  Time.zone.at(@tz.utc_to_local(timestamp))
end

что находится в самом низу скрипта импорта,

на:

def parse_timestamp(timestamp)
  return nil if timestamp.nil? || timestamp.to_i == 0

  # Convert integer → Time → Apply timezone → Convert to Rails Time.zone
  utc_time = Time.at(timestamp.to_i).utc
  local_time = @tz.utc_to_local(utc_time)
  Time.zone.at(local_time)
end

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

Сработало, и это отлично. Спасибо @Pfaffman за помощь, мы очень ценим это.

Теперь 20 лет тем и сообщений уже в Discourse, и удивительно мало работы по очистке — скрипт отличный, как только вы его настроите :slight_smile:

Чтобы запустить скрипт, я установил mariadb-server на хосте. На хосте мне пришлось убедиться, что фаервол открыт, MySQL слушает правильный порт, а пользователь root имеет права на доступ с удалённого хоста (в данном случае хост VPS), обновив его права доступа в MySQL.

(после этого все настройки фаервола и прав доступа были снова закрыты)

Затем внутри контейнера я указал скрипту IP-адрес хоста (по умолчанию для Docker), и всё пошло как надо… кроме проблемы со временем, для которой я нашёл решение, описанное здесь:

Это краткое описание того, что я сделал. Если кто-то наткнётся на эту тему, пытаясь сделать то же самое, и застрянет, обращайтесь — я постараюсь помочь всем, что узнал за последние несколько дней!

Я очень рад, что всё заработало. Мой первоначальный прогноз о том, что это займёт выходные, оказался, вероятно, вполне точным!

2 лайка

Отлично! Я так рад, что у вас получилось!

1 лайк