dr3adx
(Dr3adx)
5월 18, 2020, 4:08오전
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)
5월 18, 2020, 5:23오후
2
raw가 nil인 상태로 호출되기 때문입니다.
따라서 어떤 함수가 이를 호출하고 있으며, 게시물의 원시 데이터(raw data)를 받지 못하는 이유를 파악해야 합니다.
제 추측은 이 줄일 것입니다:
bio_raw: clean_up(u["pp_about_me"]),
만약 그렇다면, 데이터를 받지 못했을 때 nil을 반환하도록 clean_up을 수정하는 것이 좋습니다.
dr3adx
(Dr3adx)
5월 19, 2020, 12:54오전
4
pfaffman:
raw가 nil로 전달되고 있기 때문입니다.
따라서 어떤 함수가 이를 호출하고 있는지, 그리고 게시물의 원본 데이터(raw data)가 전달되지 않는 이유는 무엇인지 파악해야 합니다.
제 추측은 이 줄입니다:
bio_raw: clean_up(u["pp_about_me"]),
이런 경우라면, clean_up 함수를 수정하여 데이터가 없으면 nil을 반환하도록 하는 것이 좋을 것입니다.
이렇게 하면 좋을까요?
if raw.to_i.zero?
return
end
이렇게 시도해 봤는데 모든 사용자, 주제, 게시물이 가져와지긴 했지만 게시물의 본문(body)이 없습니다(빈 상태입니다). 이유가 뭘까요? "return nil"을 추가해도 큰 차이가 없을 것 같은데, 어떻게 생각하시나요?
또한 모든 개인 메시지도 가져와졌지만 이것들도 비어 있습니다.
pfaffman
(Jay Pfaffman)
5월 19, 2020, 2:07오전
5
데이터베이스 쿼리가 어딘가에서 잘못되었습니다. 게시글 콘텐츠 데이터를 가져오지 못하고 있습니다.
riking
(Kane York)
5월 19, 2020, 6:55오전
6
아니요, 그건 너무 자주 트리거가 됩니다. 이렇게 해보세요:
return if raw.nil?
dr3adx
(Dr3adx)
5월 19, 2020, 5:01오후
7
IPB3를 사용하고 있고 컬럼 이름을 확인했는데 일치하는데 왜 그런지 모르겠네요
pfaffman
(Jay Pfaffman)
5월 19, 2020, 5:36오후
8
스크립트가 수행하는 쿼리를 직접 실행해 보면, 기대하는 데이터를 반환합니까?
if raw.to_i.zero?
을 다음과 같이 변경해 보셨나요?
if raw.length == 0
"randome text".to_i.zero?는 항상 true를 반환합니다.