dr3adx
(Dr3adx)
Maio 18, 2020, 4:08am
1
Estou tentando importar dados do meu fórum IPB e ao executar o script ipboard3 recebo o seguinte erro:
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!'
Por que está dando ‘undefined method’ para ‘encode!’
pfaffman
(Jay Pfaffman)
Maio 18, 2020, 5:23pm
2
Porque está sendo chamado com raw sendo nil.
Então, você precisará descobrir qual função está chamando isso e por que não está recebendo dados para os dados brutos do post.
Minha suposição é que seja esta linha:
bio_raw: clean_up(u["pp_about_me"]),
Se for esse o caso, talvez o que deva ser feito seja modificar clean_up para que ela retorne nil se não receber dados.
dr3adx
(Dr3adx)
Maio 19, 2020, 12:54am
4
pfaffman:
Porque está sendo chamado com raw como nil.
Então, você precisará descobrir qual função está chamando isso e por que os dados brutos da postagem não estão sendo recebidos.
Minha suposição é que seja esta linha:
bio_raw: clean_up(u["pp_about_me"]),
Se for esse o caso, talvez o que deva ser feito seja modificar clean_up para que retorne nil se não receber dados.
isso está bom?
if raw.to_i.zero?
return
end
Tentei isso e ele importou todos os usuários, tópicos e postagens, mas as postagens não têm corpo (estão vazias). Tem alguma ideia do porquê? Não acho que adicionar “return nil” faria muita diferença. O que você acha?
Além disso, todas as mensagens privadas foram importadas, mas também estão vazias.
pfaffman
(Jay Pfaffman)
Maio 19, 2020, 2:07am
5
A consulta ao banco de dados está incorreta por algum motivo. Ela não está recuperando os dados do conteúdo da postagem.
riking
(Kane York)
Maio 19, 2020, 6:55am
6
Não, isso vai disparar com muita frequência. Tente isso:
return if raw.nil?
dr3adx
(Dr3adx)
Maio 19, 2020, 5:01pm
7
Isso é estranho, pois estou usando o IPB3 e verifiquei os nomes das colunas e eles batem
pfaffman
(Jay Pfaffman)
Maio 19, 2020, 5:36pm
8
Se você executar as consultas que o script está fazendo, elas fornecem os dados que você espera?
Você mudou seu
if raw.to_i.zero?
para algo como
if raw.length == 0
"randome text".to_i.zero? sempre será verdadeiro.