Erro de importação do vBulletin 5 (caractere inválido no campo do site) e uma pergunta rápida sobre anexos

Olá, pessoal!

Depois de importar meu primeiro fórum antigo do phpBB há 3 anos, estou feliz por ter motivado um administrador de fórum comunitário internacional a migrar outro fórum, ainda maior (180.000 membros, 1,6 milhão de mensagens), para o Discourse. :tada:

Este fórum usa o vBulletin5.

A importação funcionou bem até o usuário de número 71712, devido a caracteres inválidos no campo do site:

:website=>\"http://url-redacted.com - æåñòêîå ïîðíî ñìîòðåòü îíëàéí\",

As duas mensagens de erro resultantes:

1: from /usr/local/rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/uri/rfc3986_parser.rb:73:in `parse' /usr/local/rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/uri/rfc3986_parser.rb:21:in `split': URI must be ascii only \"http://url-redacted.com - \\u00E6\\u00E5\\u00F1\\u00F2\\u00EA\\u00EE\\u00E5 \\u00EF\\u00EE\\u00F0\\u00ED\\u00EE \\u00F1\\u00EC\\u00EE\\u00F2\\u00F0\\u00E5\\u00F2\\u00FC \\u00EE\\u00ED\\u00EB\\u00E0\\u00E9\\u00ED\" (URI::InvalidURIError)

e:

1: from /usr/local/rvm/gems/ruby-2.6.5/gems/addressable-2.7.0/lib/addressable/uri.rb:2394:in `defer_validation' /usr/local/rvm/gems/ruby-2.6.5/gems/addressable-2.7.0/lib/addressable/uri.rb:2475:in `validate': Invalid character in host: 'url-redacted.com.com - æåñòêîå ïîðíî ñìîòðåòü îíëàéí' (Addressable::URI::InvalidURIError)

Se a URL “deve conter apenas ASCII”, talvez o conteúdo do campo pudesse ser simplesmente removido ou sanitizado, em vez de gerar um erro e interromper o script? :thinking:
Vou tentar remover este usuário do banco de dados antes de tentar importar novamente.

Além disso, tenho outra pergunta. Os avatares estão armazenados no banco de dados e foram importados com sucesso.

Mas e os anexos? No meu caso, eles também estão no banco de dados, pois é o padrão do vBulletin. Eles serão importados ou precisam ser armazenados como campos separados?

Olá @Canapin

Quando migramos nosso antigo fórum vB3, tivemos muitos erros no script de migração devido a algum estranho mojibake ou a um anexo peculiar que estava poluindo o banco de dados após 15 anos de posts.

O que fiz, não foi muito elegante, mas funcionou para nós:

Quando nos deparamos com esses erros, simplesmente editei o script de migração onde os erros ocorriam e envolvi a linha problemática com:

begin
#linha ruby problemática aqui
rescue
puts "aqui está alguma informação interessante sobre o problema"
end

Minha experiência ao migrar cerca de 1 milhão de posts do vB3 para o Discourse foi que um dos meus melhores amigos foi:

begin
rescue
end

Perdemos alguns posts malformados, mas para mim não foi problema descartar um punhado de posts entre um milhão.

Espero que isso ajude.

Como não conheço Rails, substituí o conteúdo do campo do site por uma string vazia. Era uma conta de spam de qualquer forma, e é o único erro em quase metade dos usuários já processados.

Então, não é um grande problema se não for corrigido no código do script, embora seria bom que não bloqueasse a importação :wink:

Quanto aos anexos, vou tentar importar as mensagens de qualquer maneira e verificarei se os anexos são importados ou não (ou se houver algum tipo de mensagem de erro), caso não receba essa informação no meio do caminho.

Olá @Canapin

Nós também tivemos que escrever alguns wrappers em Ruby begin rescue end quando importamos nossos anexos do vB3 para o Discourse; mas, no final, conseguimos migrar quase todos os anexos, avatares e imagens de perfil.

Quando começamos, eu não tinha experiência com Ruby e Rails; mas agora sou um grande fã de Ruby e Rails, graças ao Discourse; e escrevo um pouco de código Rails todos os dias.

Acho que é bom aprender um pouco durante a migração, se você tiver interesse.