dr3adx
(Dr3adx)
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!'
なぜ ‘encode!’ メソッドが未定義として扱われるのでしょうか?
pfaffman
(Jay Pfaffman)
2
raw が nil として渡されているためです。
したがって、どの関数がこれを呼び出しているのか、またなぜ投稿の生データ(raw data)が取得できていないのかを特定する必要があります。
私の推測では、この行が原因かもしれません:
bio_raw: clean_up(u["pp_about_me"]),
もしそうなら、clean_up を変更して、データが得られない場合は nil を返すようにするべきでしょう。
dr3adx
(Dr3adx)
4
これは適切でしょうか?
if raw.to_i.zero?
return
end
これを試しましたが、ユーザー、トピック、投稿はすべてインポートされました。しかし、投稿本文は空です。なぜだか分かりますか?“return nil” を追加してもあまり意味がないと思いますが、どう思いますか?
また、すべてのプライベートメッセージもインポートされましたが、それらも空です。
pfaffman
(Jay Pfaffman)
5
なぜかデータベースクエリが正しく動作しません。投稿コンテンツのデータが取得できていません。
riking
(Kane York)
6
いいえ、それでは頻繁に発火してしまいます。代わりにこちらを試してください:
return if raw.nil?
dr3adx
(Dr3adx)
7
不思議ですね。IPB3 を使用しており、カラム名を確認しましたが一致しています 
pfaffman
(Jay Pfaffman)
8
スクリプトが実行しているクエリを実行した場合、期待するデータが得られますか?
if raw.to_i.zero?
を以下のように変更しましたか?
if raw.length == 0
"randome text".to_i.zero? は常に true になります。