dr3adx
(Dr3adx)
18.Май.2020 04:08:04
1
Я пытаюсь импортировать данные с моего форума 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!’»?
pfaffman
(Jay Pfaffman)
18.Май.2020 17:23:27
2
Потому что вызов происходит, когда raw равен nil.
Вам нужно выяснить, какая функция вызывает это и почему данные для поля raw поста не получаются.
Мое предположение — эта строка:
bio_raw: clean_up(u["pp_about_me"]),
Если так, то, возможно, стоит изменить clean_up, чтобы она возвращала nil, если данных нет.
dr3adx
(Dr3adx)
19.Май.2020 00:54:49
4
pfaffman:
Потому что raw передается как nil.
Так что вам нужно выяснить, какая функция вызывает её и почему для исходных данных поста не поступают данные.
Мое предположение — эта строка:
bio_raw: clean_up(u["pp_about_me"]),
Если так, то, возможно, стоит изменить clean_up, чтобы она возвращала nil, если данных нет.
Это хорошо?
if raw.to_i.zero?
return
end
Я попробовал это, и все пользователи, темы и посты импортировались, но у постов нет тела (они пустые). Есть какие-то идеи, почему? Не думаю, что добавление “return nil” сильно изменит дело, что вы думаете?
Также все личные сообщения импортировались, но они тоже пустые.
pfaffman
(Jay Pfaffman)
19.Май.2020 02:07:24
5
Запрос к базе данных по какой-то причине неверен. Он не получает данные для содержимого поста.
riking
(Kane York)
19.Май.2020 06:55:15
6
Нет, это будет срабатывать слишком часто. Попробуйте так:
return if raw.nil?
dr3adx
(Dr3adx)
19.Май.2020 17:01:05
7
Странно, потому что я использую IPB3, и я проверил имена столбцов — они совпадают
pfaffman
(Jay Pfaffman)
19.Май.2020 17:36:26
8
Если вы выполняете те же запросы, что и скрипт, предоставляют ли они ожидаемые вами данные?
Вы изменили
if raw.to_i.zero?
на что-то вроде
if raw.length == 0
Выражение "randome text".to_i.zero? всегда возвращает true.