Bug no import_script do vBulletin ao importar categorias filhas

Olá a todos,

Bem, antes de tudo, um GRANDE OBRIGADO ao Discourse. O Discourse é uma obra de arte e muito impressionante. Após mais de uma década com o vBulletin, não conseguimos encontrar nenhum software de fórum para migrar (era tudo apenas ‘mais do mesmo’… blá blá blá), até o Discourse. OBRIGADO

Atualmente, estou no modo de teste, importando do vB 3.8.X para a versão mais recente do Discourse em um contêiner Docker, ambas as primeiras vezes para mim. De fato, antes desta semana, eu nunca pensei que escreveria uma única linha de Ruby, mas o Discourse é tão bom que vale a pena.

O script de importação vbulletin.rb está rodando há um dia ou mais; e, na maior parte, está funcionando bem. De fato, é extremamente impressionante. Algumas vezes ele gerou um erro, mas quando reiniciei o script, o erro desapareceu.

Eu encontrei um bug na importação de categorias filhas (que não desaparece ao reiniciar) e aqui está:


Traceback (most recent call last):

5: from script/import_scripts/vbulletin.rb:942:in `<main>'

4: from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'

3: from script/import_scripts/vbulletin.rb:84:in `execute'

2: from script/import_scripts/vbulletin.rb:287:in `import_categories'

1: from script/import_scripts/vbulletin.rb:287:in `each'

script/import_scripts/vbulletin.rb:289:in `block in import_categories': undefined method `[]' for nil:NilClass (NoMethodError)

root@localhost-app:/var/www/discourse# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'

Meu plano para resolver isso é ruim. Eu ia fazer um redump do banco de dados do vB e transformar todos os fóruns filhos em pais e, em seguida, fazer toda a migração novamente; mas então pensei que talvez devesse ser mais sociável e postar isso como um relatório de bug.

Alguma sugestão sobre uma maneira melhor de corrigir isso, além da minha ideia de novato acima?

Se não, planejo apenas fazer um dump novamente, fazer ajustes manualmente no banco de dados e migrar novamente, o que tenho certeza de que é uma maneira de novato de resolver isso.

Obrigado!

Talvez considere atualizar para pelo menos o vB 4 primeiro… o importador é direcionado principalmente para a versão 4.x.

Quão profundas estão suas categorias aninhadas? Se você tiver apenas um ou dois níveis, basta comentar o código de achatamento nas linhas 287-291.

Não. Eu não farei isso (atualizar para a vB4).

Já comentei as linhas problemáticas ontem.

Minha pergunta é basicamente corrigir isso para a vB 3.8; caso contrário, eu mesmo farei a correção. Relatei, nesta postagem, um “bug” sobre o código e, se não receber uma resposta de “correção de bug no código”, farei a correção do código eu mesmo.

É por isso que postei o bug aqui :). É um relatório de “bug” sobre o código. O código tem um “bug” e, portanto, eu o relatei…

Hmmm. Eu estava tentando ser “sociável” e postar o bug aqui, na esperança de receber sugestões dos líderes (código) que funcionem para o meu caso (não o caso da vB4); e, desculpe novamente, mas não vou atualizar para a vB4 sob nenhuma condição. Desculpe por ser tão direto e por não seguir aquela ideia. Vou modificar o script de migração conforme necessário e ajustar nosso banco de dados conforme exigido. Até agora, já adicionei código para tags de código personalizadas, etc.

Saúde.

Como um dos contribuidores do importador do vBulletin, autor do importador do VB 5 e alguém que realizou mais de 50 conversões de vB para Discourse, eu apenas estava compartilhando a informação de que o importador é testado principalmente no vB 4, e não na versão 3.8, que está fora do suporte há mais de 7,5 anos. Eu não estava tentando “impressioná-lo”…

De qualquer forma. Estou me perguntando se isso é um bug no importador, um problema relacionado ao vB 3.x ou um banco de dados corrompido. Suspeito que as últimas opções sejam mais prováveis. Você poderia modificar o código para selecionar uma categoria padrão caso a função de detecção não retorne um resultado, mas (pelo menos) no vB 4, isso indicaria uma categoria órfã sem um pai adequado, ou seja, um banco de dados corrompido.

Não há nada corrompido no nosso banco de dados, e pode ou não ser um problema do vB 3.8.X. Mas, claro, está relacionado ao vB 3.8.X porque esta é uma atualização do vB 3.8.X, LOL.

Por outro lado, li muitos posts na internet em outros fóruns com muitas pessoas tendo problemas ao migrar para o Discourse, mesmo vindo do vB 4. (Isso é normal) Então, claro, não sou a única pessoa no planeta relatando bugs de migração. Ninguém gosta de migração. É entediante para todos. Mas eu estou bem com isso, porque adoro o Discourse. Os caras que o escreveram são artistas! São impressionantes.

Como disse, a “abordagem boba” que certamente funcionará é simplesmente despejar nosso banco de dados novamente, alterar manualmente todos os fóruns filhos que queremos manter para serem fóruns pais e fazer a migração novamente. Não quero um tópico ‘padrão’ para fóruns filhos importantes, e todos os nossos fóruns principais são filhos, não pais.

@michaelp, se você não tem experiência ou interesse em garantir que este script funcione com as versões legadas do vB3.8.X, isso é perfeitamente compreensível. Mas, por outro lado, eu também tenho zilionários de anos codificando, portando, migrando, construindo, corrigindo bugs, e publiquei um relatório de bug aqui no Meta Discourse relacionado a este código. Adoro o vB 3.8 e ainda acho, hoje, que era um fórum melhor do que o vB 4 e o vB 5. É por isso que nunca atualizei para o vB 5 ou vB 5. Não gostamos do vB 4/5. :slight_smile:

Se isso for se transformar em uma discussão do tipo “bem, não é vB 4 e não é vB 5”, então é melhor eu não postar mais nenhum bug de migração aqui e me tornar mais ativo após a conclusão da migração.

Abraços.

Vou manter um registro aqui e vou sair desta discussão por enquanto e apenas fazer isso:

Não, não é isso. Eu só estava tentando te ajudar e descobrir o caminho de migração que exigiria menos esforço da sua parte. Desculpe se ofendi você com minha resposta sincera. Aparentemente, toquei em um ponto sensível. Não foi minha intenção.

Boa sorte com a migração! Talvez você possa fazer um pull request com suas melhorias quando terminar.

Sem problemas, @michaeld

Muito obrigado por criar o script de migração vbulletin.rb.

Eu realmente percebo que você estava tentando ser útil e, sim, sua sugestão de “migrar para o vB4” me irritou; mas sem ressentimentos. Às vezes, sou fácil de irritar, especialmente ao relatar um bug e receber uma resposta que não é útil (para mim, na minha situação/caso).

Na verdade, se essa porta funcionar (ainda estou fazendo a portabilidade), terei uma grande dívida de gratidão com você (e com todos os coautores) pelo script principal vbulletin.rb!

O Discourse é realmente INCRÍVEL!!

Obrigado novamente pelo script de migração. Com certeza, não teríamos iniciado esse processo trabalhoso sem ele!

Obrigado novamente!

PS: Como mencionei, meu plano para essa “correção” é simplesmente fazer um dump do banco de dados, alterar os fóruns filhos importantes para pais e “tocar de novo, Sam”… :slight_smile:

Para maior clareza: eu não escrevi todo o vbulletin.rb, apenas contribuí para ele. Eu criei especificamente o vbulletin5.

De qualquer forma, OBRIGADO.

Ambas as contribuições são sólidas e um presente para a comunidade de fóruns.

Vou postar quaisquer atualizações sobre a migração vB3.8.X “lá mesmo”, onde estou mantendo um registro cronológico dos eventos à medida que acontecem.

Abraços


O único comentário “cauteloso” que tenho até agora é que, das duas pessoas do “lado do Discourse” com as quais interagi até agora, ambas “estavam com as mãos estendidas” tentando ganhar dinheiro com essa migração. Um cara era um “especialista em migração” contratado que queria dinheiro para me ajudar, e a outra pessoa estava nos fóruns do Discourse; a outra era um provedor de servidores do Discourse.

Isso me deixa bastante triste. Eu estava tentando ajudá-lo sem nenhum interesse comercial.

Sim, isso não é realmente justo @neounix

@michaeld é bastante ativo na comunidade Discourse e retribui muito para todos, no estilo open source. O que é particularmente valioso, já que eles (Communiteq (anteriormente DiscourseHosting)) hospedam muitos sites Discourse a preços muito razoáveis e têm muita experiência com hospedagem real de Discourse. :revolving_hearts:

Olá Jeff,

Recentemente, construí várias soluções com Node-RED e entrei no fórum do Node-RED (que é um site baseado em Discourse).

Nesse fórum, todos estão se esforçando para ajudar uns aos outros. De iniciantes a especialistas, todos estão vibrantemente ajudando os demais. Na verdade, às vezes parece um pouco “movido por testosterona”, onde muitos dos experientes competem para ser os “melhores ajudantes” e os “primeiros a responder”. É interessante. Já vi isso em comunidades online antes, inclusive na nossa, ao longo da última década (mas essa é outra história para outro dia).

Como alguém que está nesse meio há muito tempo, e tenho certeza de que você concorda, toda comunidade online tem seus pontos fortes e fracos. Quando novas pessoas entram na comunidade, elas trazem uma perspectiva valiosa porque não fazem parte da hierarquia social estabelecida. Acredito que todos com experiência em comunidades online concordariam com isso.

Claro, agradeço imensamente as contribuições de @michaeld, e o script vbulletin.rb tem sido um ponto de partida muito útil e muito apreciado para essa migração de legado para a “obra de arte” que você criou, o Discourse. O Discourse é realmente MARAVILHOSO. Estou esperando por algo tão MARAVILHOSO há anos, e ficamos, tristemente, presos ao vB3, e não sou um grande programador para construir algo como o Discourse sozinho.

Então, sim, admito minha culpa (e aceito qualquer punição) por ter me sentido desencorajado e não bem-vindo quando submeti um relatório de bug durante um teste de migração e, em seguida, recebi o que me pareceu ser um tratamento frio, ficando ainda mais “desencorajado” quando meu relatório de bug foi movido de ‘bug’ para ‘suporte’, quando claramente há bugs no script vbulletin.rb. A sugestão de migrar um fórum vB3 perfeitamente bom para um horrível vB4 para fazer esse script funcionar melhor é inviável (e me desencorajou, honestamente); e até agora, ninguém levou meus relatórios de bug a sério nem demonstrou interesse em corrigi-los; então acho que não enviar relatórios de bug relacionados à migração do vB3 é uma boa ideia, não é mesmo?

Então, não é um problema. Por exemplo, o script de migração vbulletin.rb atual (no anexo de migração) exige uma tabela filedata que não existe no vB3. Não é um problema. Vou criar uma solução alternativa. Existem bugs na forma como forums são migrados para categories. Já criei uma solução alternativa para isso. Talvez minha solução alternativa não seja perfeita, mas tudo bem. Ainda estou testando.

Vamos não transformar isso em uma discussão de personalidade. Estou trabalhando em uma migração. É muito trabalho e está avançando lentamente; como ver tinta secar; mas, por outro lado, é emocionante ver o Discourse ganhar vida. Devo muito a esta comunidade e vou retribuir quando passar por essa “fase nem tão divertida” e entrar na “fase divertida”, com certeza.

Agradeço muito pelo Discourse - é uma obra de arte, e um produto de código aberto muito bom. É brilhante. Obrigado. E o script de migração, embora um pouco com bugs para vB3, é viável; e agradeço muito esse ponto de partida para a migração.

Sinto que você ache meus comentários injustos. É minha culpa, porque acabei de passar algumas semanas com visitas intensivas no fórum do Node-RED; onde a comunidade tem uma atitude tão ótima em ajudar os outros, que fiquei desencorajado com minha experiência inicial com alguns participantes do Discourse, ambos com interesses comerciais. Até agora, essa é minha impressão. Desculpe por essa primeira impressão “aqui” comparada à “lá”. Foi o Node-RED e o uso que fizeram do Discourse que me convenceram a mover nosso site para o Discourse.

Embora você possa achar que minhas primeiras impressões são injustas, não citei nomes e mantive minhas impressões anônimas, o que achei justo na época. Além disso, considerando que meu relatório de bug foi basicamente desconsiderado e ignorado pelo meta (como em, bem, é só vB3, LOL), o que seria justo na sua opinião? Você quer que eu exclua meu comentário “cauteloso” sobre interesses comerciais?

Estou fazendo o trabalho da migração; e está avançando, bugs no script e tudo mais, porque os bugs são apenas bugs, coisas para serem resolvidas e seguir em frente.

Peço desculpas se, durante essa migração de teste impulsiva, saindo de uma experiência vibrantemente apoiadora do Node-RED, não fiquei tão impressionado quanto estava na comunidade NR Discourse; mas, como @michaeld respondeu a mim, ele disse que não se importa se estou “impressionado” ou “não”; e tudo bem. Todos têm direito à sua opinião. Suponho que isso inclua minha opinião/impressão inicial, certo?

Estou muito favoravelmente impressionado com o Discourse e, embora com bugs, o script vbulletin.rb funciona bem o suficiente para começar; e o suficiente para se divertir, e isso é o mais importante, não é?

Devemos nos divertir!

Eu estaria um pouco mais feliz com o meta se vocês levassem meus relatórios de bug no script vbulletin.rb mais a sério; mas, novamente, entendo. Estamos no vb3 e a mensagem é você está por conta, amigo, e isso é perfeitamente compreensível. Entendo.

Ninguém acha que vB3 é divertido mais. LOL Principalmente EU após mais de uma década e estou tão feliz e grato pelo Discourse para que finalmente possamos sair desse fórum legado, ultrapassado e do passado e ir para essa obra de arte online moderna, o Discourse.

Apenas me avise se quiser que eu exclua meu comentário de cautela e eu o farei, se você realmente achar, após esta resposta, que ainda é injusto. Achei que foi justo, mas também aceito uma visão externa. Visões externas são boas e geralmente muito úteis (e isso vale para ambos os lados, espero)

Saúde.

Acredite em mim, eu sou totalmente a favor de migrar comunidades de softwares antigos. Esse é um dos principais objetivos do Discourse.

É possível que possamos apoiar seu trabalho de desenvolvimento do script de migração do VB3 para o Discourse com uma subvenção financeira do Discourse, se seus resultados forem positivos e você puder fornecer evidências de que tudo está funcionando :hugs:

Olá, Jeff,

Obrigado pela oferta, mas estou bem realmente; e não preciso de nenhum apoio financeiro.

Estou “arrumado para a vida”, como dizem; e realmente não preciso de mais recursos financeiros. Sou sortudo, como dizem, verdadeiramente abençoado; e não vejo a vida como um jogo para ficar “cada vez mais rico”.

Nosso site, segundo um cálculo rápido, ao longo de seus muitos anos, desde o nascimento, até o auge, e seguindo para “bem avançado em anos”, apresentou conteúdo em resultados de busca para mais de 500 milhões de usuários únicos não registrados, talvez mais; não acompanho isso tão de perto.

Esse “bom carma” é suficiente para mim, sabendo que ajudamos tantas pessoas necessitadas ao longo de longas carreiras em TI. É disso que se trata para mim (e imagino que para você também): não é o dinheiro, é o “bom carma” de ajudar outros em um fórum de tecnologia. Então, quando fizermos a atualização para Discourse, será melhor para todos, com certeza. Nunca conseguiria codificar uma obra de arte como o Discourse. Sou um diletante de múltiplas áreas e um especialista em cibersegurança e engenheiro de sistemas de profissão, e estou felizmente aposentado da vida pública e profissional, na maior parte.

A primeira migração de teste correu muito melhor do que o esperado. Encontrei alguns bugs e algumas coisas que são apenas questões únicas do nosso site, como tags BBCODE personalizadas. Consigo gerenciar tudo, não é um problema; e então preciso personalizá-lo para nossa comunidade; então haverá um trabalho divertido a fazer lá, e estou ansioso para chegar lá e passar da migração 101.

Em relação ao vb3, certamente há muitas comunidades legadas de vb3 por aí, e é ótimo que você esteja interessado em ajudá-las. Concordo que o vbulletin.rb não é avançado o suficiente para gerenciar migrações para aqueles menos técnicos do que nós; pois considero o núcleo do vbulletin.rb “suficientemente bom” e posso modificá-lo facilmente (e tenho feito isso conforme os erros surgem).

Vou voltar a trabalhar nisso; pois preciso alterar mais algumas coisas no vbulletin.rb para levar em conta os erros, que tenho registrado em nosso site, com grande detalhe, conforme avanço. Preciso concluir isso, e será feito mais rápido se eu simplesmente fizer agora.

Obrigado novamente pela gentil oferta. Todas as anotações sobre isso, em cada passo do caminho, o bom, o “não perfeito” e o ótimo, estarão neste link, que postei anteriormente:

Ficarei feliz em voltar ao meta depois de concluir esta fase completada e finalizada e deixar nossos usuários testarem, para então recebermos o feedback deles. Tenho confiança de que a maioria quererá que mudemos para o Discourse e saiamos dessa bagunça legada.

Obrigado novamente pelo Discourse. Não há palavras suficientes para dizer coisas boas sobre sua generosa doação de código aberto ao mundo.

Honestamente, não quero tirar seu valioso tempo com isso, e percebo que o vb3 não é divertido para ninguém mais, e isso é especialmente verdadeiro para eu mesmo. Espero que o pesado âncora de barco vb3 seja removida do meu pescoço em breve. Consigo gerenciar, sem problema, acho eu.

Novamente, um chapéu para você e para a equipe do Discourse pelo Discourse, e obrigado a você e à sua equipe pelo script básico de migração vbulletin.rb. Os bugs não são um problema em absoluto. Se fosse muito fácil, não seria tão interessante!

Na verdade, a migração já está funcionando bem, mas preciso escrever mais código personalizado para nosso BBCODE personalizado, corrigir alguns bugs aqui e ali e executá-la novamente!

Obrigado novamente!

Por outro lado,

@codinghorror

Se você quiser que alguém da sua equipe trabalhe comigo para corrigir alguns dos bugs mais graves, como o erro filedata causado por uma tabela ausente no vb3, ficarei feliz em ajudar, mesmo que isso desacelere o processo, em benefício de outras comunidades vb3 e para tornar o vbulletin.rb melhor para o vb3.

Me avise. Estou bem em desacelerar e ajudar, pensando melhor. Com certeza, não quero parecer egoísta ou não ser um bom jogador de equipe nesta empreitada.

Para ser honesto, não sou um grande colaborador em código, mas estou disposto a tentar se isso ajudar outros usuários legados do vb3.

Espere. Primeiro de tudo, eu não disse isso. Eu disse que não estava tentando “impressionar” você e isso foi uma resposta à sua afirmação de que você “não ficou impressionado com minha resposta”, que você então removeu de sua postagem. Mais uma vez: isso me deixa triste.

E não importa se você está impressionado ou não, se você sente que recebeu um tratamento frio ou não, você disse — pelas minhas costas — que eu “tinha as mãos estendidas, procurando ganhar dinheiro com essa migração”, o que simplesmente não é verdade. E então há muitas palavras da sua parte, mas você não abordou o fato de que isso é simplesmente falso. Na verdade, você repetiu isso. E “sinto que você se sinta assim” não é um pedido de desculpas.

Ainda acho que isso não é um bug e ainda acho que há algo errado com a forma como seus fóruns são armazenados em seu banco de dados, seja algo que esteja claramente “errado” ou algo que fosse aceitável no vB3, mas não no vB4.

Eu nunca pedi que você executasse o vB4; eu sugeri que você migrasse seu banco de dados para ele e depois o processasse através do importador. Verdadeiro estilo “unix”, onde você encadeia múltiplos passos para chegar ao resultado desejado — na minha opinião, o caminho de migração mais curto e barato.

Este é o conselho adequado. Há algum motivo para você não poder atualizar para o VB4? Porque isso pode ser mais fácil do que criar um migrador completo do zero para o VB3.

Micheald,

Faça-nos um favor e pare com isso.

Consigo ler quase tão bem quanto qualquer outra pessoa, e o que você disse foi:

Talvez considere atualizar para, pelo menos, o vB 4 primeiro… o importador é direcionado principalmente à versão 4.x.

Isso é bem diferente de:

Sugeri que migrasse seu banco de dados para ele e, depois, o processasse pelo importador.

Apenas pare com isso, @Micheald.

Por favor, pare com toda essa discussão fútil. Por favor.

É completamente improdutivo.

Sinto muito se você interpretou mal minha sugestão e, ainda mais, lamento que você tenha considerado esse comentário “improdutivo”, pois foi um conselho bem-intencionado.

Eu nunca sugeriria, honestamente, que alguém execute seu fórum no vB4.

Agora vou me descadastrar deste tópico, pois não sinto que você está me tratando de forma justa.

Não concordo. Na verdade, de acordo com nosso painel de controle de membros legado do vB, não podemos atualizar para o vB4 de forma alguma.

Obviamente, como nosso site é usuário do ```vB`` há muito tempo, deveríamos ter alguma ideia de como isso funciona do lado do vB.

Já mencionei que atualizar para o vB4 é inviável para nós.

Isso não está levando a lugar nenhum (é como um tiroteio circular, LOL), primeiro é “migre para o vB4”, depois é “vamos trabalhar juntos no vB3 e nos divertir”… então, oh, espere, “o que queríamos dizer era ‘vá migrar para o vB4 como você nos disse dias atrás que era inviável’”.

Isso realmente não está sendo divertido aqui no ```meta`` LOL.

Por favor, vamos parar com as ideias de ```apenas atualize seu banco de dados para o vB4 e a vida será ótima``. Fiquei claro que isso é inviável e não vai acontecer.

MUITO OBRIGADO

Vejam por vocês mesmos… nenhuma opção para atualizar para o vB4… É uma “não opção”, como já mencionei.

Deveria ficar claro nesta imagem do painel de controle do vB… :frowning: