dr3adx
(Dr3adx)
18. Mai 2020 um 04:08
1
Ich versuche, Daten von meinem IPB-Forum zu importieren, und beim Ausführen des Skripts ipboard3 erhalte ich folgenden Fehler:
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!'
Warum wird der Fehler „undefined method ‘encode!’
pfaffman
(Jay Pfaffman)
18. Mai 2020 um 17:23
2
Weil raw mit nil aufgerufen wird.
Du musst also herausfinden, welche Funktion sie aufruft und warum keine Daten für die Rohdaten des Beitrags vorliegen.
Meine Vermutung ist diese Zeile:
bio_raw: clean_up(u["pp_about_me"]),
Falls dem so ist, wäre es vielleicht ratsam, clean_up so zu ändern, dass es nil zurückgibt, wenn keine Daten vorliegen.
dr3adx
(Dr3adx)
19. Mai 2020 um 00:54
4
pfaffman:
Das liegt daran, dass raw mit nil aufgerufen wird.
Du musst also herausfinden, welche Funktion sie aufruft und warum keine Daten für den Rohinhalt des Beitrags vorliegen.
Meine Vermutung ist diese Zeile:
bio_raw: clean_up(u["pp_about_me"]),
Falls das der Fall ist, wäre der nächste Schritt vielleicht, clean_up so zu ändern, dass es nil zurückgibt, wenn keine Daten vorliegen.
Ist das gut?
if raw.to_i.zero?
return
end
Ich habe das ausprobiert, und es wurden zwar alle Benutzer, Themen und Beiträge importiert, aber die Beiträge haben keinen Inhalt (sie sind leer). Hast du eine Idee, warum? Ich glaube nicht, dass das Hinzufügen von “return nil” einen großen Unterschied macht. Was denkst du?
Außerdem wurden alle privaten Nachrichten importiert, aber auch sie sind leer.
pfaffman
(Jay Pfaffman)
19. Mai 2020 um 02:07
5
Die Datenbankabfrage ist aus irgendeinem Grund falsch. Die Daten für den Beitragsinhalt werden nicht abgerufen.
riking
(Kane York)
19. Mai 2020 um 06:55
6
Nein, das wird viel zu häufig ausgelöst. Versuche es so:
return if raw.nil?
dr3adx
(Dr3adx)
19. Mai 2020 um 17:01
7
Das ist seltsam, denn ich verwende IPB3 und habe die Spaltennamen überprüft – sie stimmen überein
pfaffman
(Jay Pfaffman)
19. Mai 2020 um 17:36
8
Wenn Sie die Abfragen ausführen, die das Skript ausführt, liefern diese die erwarteten Daten?
Haben Sie
if raw.to_i.zero?
in etwas wie
if raw.length == 0
geändert?
"randome text".to_i.zero? ist immer true.