Проблема с импортом скрипта ipboard3.rb

Я пытаюсь импортировать данные с моего форума IPB, и при запуске скрипта ipboard3 возникает следующая ошибка:

script/import_scripts/ipboard3.rb:375:in `clean_up': undefined method `encode!' for nil:NilClass (NoMethodError)
root@forum:/var/www/discourse#  `clean_up': undefined method `encode!'

Почему возникает ошибка «undefined method ‘encode!’»? :confused:

Потому что вызов происходит, когда raw равен nil.

Вам нужно выяснить, какая функция вызывает это и почему данные для поля raw поста не получаются.

Мое предположение — эта строка:

           bio_raw: clean_up(u["pp_about_me"]),

Если так, то, возможно, стоит изменить clean_up, чтобы она возвращала nil, если данных нет.

Это хорошо?

if raw.to_i.zero?
return
end

Я попробовал это, и все пользователи, темы и посты импортировались, но у постов нет тела (они пустые). Есть какие-то идеи, почему? Не думаю, что добавление “return nil” сильно изменит дело, что вы думаете?
Также все личные сообщения импортировались, но они тоже пустые.

Запрос к базе данных по какой-то причине неверен. Он не получает данные для содержимого поста.

Нет, это будет срабатывать слишком часто. Попробуйте так:

return if raw.nil?

Странно, потому что я использую IPB3, и я проверил имена столбцов — они совпадают :open_mouth:

Если вы выполняете те же запросы, что и скрипт, предоставляют ли они ожидаемые вами данные?

Вы изменили

if raw.to_i.zero?

на что-то вроде

if raw.length == 0

Выражение "randome text".to_i.zero? всегда возвращает true.