bug del script de importación de vBulletin al importar categorías hijas

Estimados todos,

Bueno, en primer lugar, un GRAN AGRADECIMIENTO a Discourse. Discourse es una obra de arte y muy impresionante. Después de más de una década con vBulletin, no pudimos encontrar ningún software de foro al que migrar (todo era lo mismo de siempre… bla bla), hasta que llegamos a Discourse. GRACIAS

Actualmente, estoy en modo de pruebas, importando desde vB 3.8.X a la versión más reciente de Discourse en un contenedor docker, ambas cosas por primera vez para mí. De hecho, antes de esta semana, nunca pensé que escribiría ni una sola línea de Ruby, pero Discourse es tan bueno que vale la pena.

El script de importación vbulletin.rb lleva funcionando un día o dos; y, en su mayor parte, funciona bien. De hecho, es extremadamente impresionante. En algunas ocasiones arrojó un error, pero cuando reinicié el script, el error desapareció.

Sí encontré un error en la importación de categorías hijas. (ese no desaparece al reiniciar) y aquí 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'

Mi plan para solucionar esto es pésimo. Iba a volver a volcar la base de datos de vB y convertir todos los foros hijos en padres, y luego hacer toda la migración de nuevo; pero luego pensé que tal vez debería ser más sociable y publicar esto como un informe de error.

¿Alguna sugerencia sobre una mejor manera de solucionar esto aparte de mi idea novata y pésima de arriba?

Si no, planeo simplemente volcar de nuevo, hacer ajustes manualmente en la BD y migrar de nuevo, lo cual estoy seguro es una forma novata y pésima de solucionar esto.

¡Gracias!

Quizás debas considerar actualizar al menos a vB 4 primero… el importador está dirigido principalmente a la versión 4.x.

¿Qué profundidad tienen tus categorías anidadas? Si solo tienes uno o dos niveles, simplemente comenta el código de aplanamiento en las líneas 287-291.

3 Me gusta

No. No lo haré (actualizar a vB4).

Ya comenté las líneas problemáticas ayer.

Mi pregunta se basa en solucionar esto para la vB 3.8; de lo contrario, simplemente arreglaré el problema yo mismo. Reporté, en esta publicación, un “error” sobre el código y, si no puedo obtener una respuesta de “corrección de error en el código”, simplemente programaré la solución yo mismo.

Por eso publiqué el error aquí :). Es un informe de “error” sobre el código. El código tiene un “error”, así que lo reporté…

Hmmm. Estaba intentando ser sociable y publicar el error aquí, esperando recibir sugerencias de los líderes (de código) que funcionen en mi caso (no en el caso de vB4); y lo siento de nuevo, pero no voy a actualizar a vB4 bajo ninguna circunstancia. Perdón por ser tan directo y por no seguir esa idea. Modificaré el script de migración según sea necesario y ajustaré nuestra base de datos como se requiera. Hasta ahora, ya he agregado código para etiquetas de código personalizadas, etc.

Saludos.

Como uno de los contribuyentes del importador de vBulletin, autor del importador de VB 5 y alguien que ha realizado más de 50 conversiones de vB a Discourse, solo estaba compartiendo la información de que el importador se prueba principalmente en vB 4, no en 3.8, que lleva más de 7,5 años en fin de vida. No intentaba «impressionarte»…

De todos modos. Me pregunto si esto es un error en el importador, un problema relacionado con vB 3.x o una base de datos corrupta. Sospecho que las últimas opciones son más probables. Podrías modificar el código para seleccionar una categoría predeterminada en caso de que la función de detección no devuelva ningún resultado, pero (al menos) en vB 4 esto indicaría una categoría huérfana sin un padre adecuado, es decir, una base de datos corrupta.

3 Me gusta

No hay nada roto en nuestra base de datos y puede que sea o no un problema de vB 3.8.X. Pero, por supuesto, está relacionado con vB 3.8.X porque esta es una actualización desde vB 3.8.X, LOL.

Por otro lado, he leído muchos mensajes en Internet en otros foros donde mucha gente tiene problemas al migrar a Discourse, incluso desde vB 4. (esto es normal) Así que, por supuesto, no soy la única persona en el planeta que reporta errores de migración. A nadie le gusta migrar. Es aburrido para todos. Pero a mí me está bien, porque me gusta Discourse. ¡Los chicos que lo escribieron son artistas! Son impresionantes.

Como dije, el “enfoque tonto” que funcionará seguro es volcar nuestra base de datos nuevamente, cambiar manualmente todos los foros hijos que queremos conservar para que sean foros padres y realizar la migración de nuevo. No quiero un tema ‘predeterminado’ para foros hijos importantes, y todos nuestros foros principales son hijos, no padres.

@michaelp si no tienes experiencia o interés en asegurar que este script funcione con las versiones heredadas de vB3.8.X, es perfectamente comprensible. Pero por otro lado, yo también tengo zillions de años programando, portando, migrando, construyendo y corrigiendo errores, y publiqué un informe de error aquí en Meta Discourse relacionado con este código. Amo vB 3.8 y todavía creo hoy que era un foro más agradable que vB 4 y vB 5. Por eso nunca actualicé a vB 5 o vB 5. No nos gusta vB 4/5. :slight_smile:

Si esto va a convertirse en una discusión de “bueno, no es vB 4 y no es vB 5”, entonces es mejor que no publique ningún error de migración aquí (ya más) y me vuelva más activo después de que la migración esté terminada.

Saludos.

Mantendré un registro continuo aquí y me retiraré de esta discusión por ahora para simplemente hacerlo:

No, no lo es. Solo estaba tratando de ayudarte y encontrar la ruta de migración con menos esfuerzo para ti. Perdona si te ofendí con mi respuesta honesta. Aparentemente toqué un punto sensible. No fue mi intención.

¡Buena suerte con la migración! Tal vez puedas hacer una solicitud de extracción con tus mejoras cuando termines.

1 me gusta

¡No te preocupes en absoluto, @michaeld!

Muchas gracias por escribir el script de migración vbulletin.rb.

Sé que intentabas ser útil y, sí, tu sugerencia de “migrar a vB4” me cayó mal; pero no hay ningún resentimiento. A veces soy fácil de “molestar”, especialmente cuando reporto un error y recibo una respuesta que no me resulta útil (en mi situación o caso).

De hecho, si este puerto funciona (aún estoy migrando), te deberé (y a todos los coautores) una gran deuda de gratitud por el script principal vbulletin.rb.

¡Discourse es realmente INCREÍBLE!!

Gracias de nuevo por el script de migración. ¡Seguramente no nos habríamos embarcado en este proceso laborioso sin él!

¡Gracias de nuevo!

PD: Como mencioné, mi plan para esta “solución” es simplemente volcar la base de datos, cambiar los foros hijos importantes a padres y “volver a empezar, Sam”… :slight_smile:

Para mayor claridad: no escribí todo el vbulletin.rb, solo contribuí a él. Sí creé el específico para vbulletin5.

1 me gusta

De cualquier manera, GRACIAS.

Ambas contribuciones son sólidas y un regalo para la comunidad de foros.

Publicaré cualquier actualización de migración vB3.8.X “allí mismo”, donde estoy llevando un registro cronológico de los eventos a medida que se desarrollan.

Saludos

1 me gusta


El único comentario “de precaución” que tengo hasta ahora es que, de las dos personas del “lado de Discourse” con las que he interactuado, ambas “tenían las manos extendidas” buscando ganar dinero con esta migración. Uno era un “experto en migración” contratado que quería dinero para ayudarme, y la otra persona estaba en los foros de Discourse; la otra era un proveedor de servidores de Discourse.

Esto me entristece bastante. Estaba tratando de ayudarte sin ningún interés comercial.

5 Me gusta

Sí, eso no es realmente justo @neounix

@michaeld es bastante activo en la comunidad de Discourse y devuelve un montón de cosas a todos, al estilo del código abierto. Lo cual es particularmente valioso, ya que ellos (Communiteq (anteriormente DiscourseHosting)) alojan muchos sitios de Discourse a tarifas muy razonables y tienen tanta experiencia con el alojamiento real de Discourse. :revolving_hearts:

5 Me gusta

Hola Jeff,

Recientemente, he creado varias soluciones con Node-RED y me uní al foro de Node-RED (que es un sitio basado en Discourse).

En ese foro, todos se ayudan mutuamente con gran entusiasmo. Desde principiantes hasta expertos, todos colaboran activamente. De hecho, a veces parece un poco “impulsado por testosterona”, donde muchos de los usuarios experimentados compiten por ser los “mejores ayudantes” y los “primeros en responder”. Es interesante. He visto esto en comunidades en línea antes, incluida la nuestra, durante la última década (pero esa es otra historia para otro día).

Como alguien que ha estado en este ámbito durante mucho tiempo, y estoy seguro de que estarás de acuerdo, cada comunidad en línea tiene sus fortalezas y debilidades. Cuando llegan personas nuevas a la comunidad, aportan una perspectiva valiosa porque no forman parte de la jerarquía social establecida. Creo que todos los que tienen experiencia en comunidades en línea estarían de acuerdo con eso.

Por supuesto, agradezco enormemente las contribuciones de @michaeld, y el script vbulletin.rb ha sido un punto de partida muy útil y muy apreciado para esta migración de un sistema heredado hacia la “obra de arte” que creaste: Discourse. Discourse es realmente GENIAL. He estado esperando algo tan GENIAL durante años, y por desgracia, nos quedamos atascados con vB3, y no soy un programador lo suficientemente bueno como para construir algo como Discourse yo mismo.

Así que, sí, admito mi culpa (y acepto cualquier castigo) por haberme sentido rechazado y poco bienvenido cuando presenté un informe de error durante una prueba de migración y luego recibí lo que me pareció un trato frío, e incluso más “rechazo” cuando mi informe de error fue movido de ‘error’ a ‘soporte’, cuando claramente hay errores en el script vbulletin.rb. La sugerencia de migrar un foro vB3 perfectamente funcional a un horrible foro vB4 para que este script funcione mejor es una idea inviable (y, honestamente, me desanimó); y hasta ahora, nadie ha tomado en serio ninguno de los informes de error ni ha mostrado interés en solucionarlos; así que creo que no presentar informes de error relacionados con una migración desde vB3 es una buena idea, ¿verdad?

Así que, no es un problema. Por ejemplo, el script de migración vbulletin.rb actual (en el archivo adjunto de migración) requiere una tabla, filedata, que no existe en vB3. No es un problema. Crearé una solución alternativa. Hay errores en cómo se migran los foros a las categorías. Ya he creado una solución alternativa para esto. Quizás mi solución no sea perfecta, pero está bien. Todavía estoy probando.

No convirtamos esto en una discusión sobre personalidades. Estoy trabajando en una migración. Es mucho trabajo y avanza lentamente; como ver secarse la pintura; pero por otro lado, es emocionante ver cómo Discourse cobra vida. De verdad, le debo mucho a esta comunidad y contribuiré de nuevo cuando supere esta “fase no tan divertida” y entre en la “fase divertida”, seguro.

Agradezco mucho Discourse; es una obra de arte y un producto de código abierto muy excelente. Es brillante. Gracias. Y el script de migración, aunque tiene algunos errores para vB3, es viable; y agradezco mucho ese punto de partida para la migración.

Lamento que hayas sentido que mis comentarios fueron injustos. Es mi culpa, porque acabo de salir de unas semanas de visitas intensivas al foro de Node-RED; donde la comunidad tiene una actitud tan excelente hacia ayudar a los demás, que me desanimé con mi experiencia inicial con algunos participantes de Discourse, ambos con intereses comerciales. Hasta ahora, esa es mi impresión. Lo siento por esa primera impresión “por aquí” en comparación con “por allá”. Fue Node-RED y su uso de Discourse lo que me convenció de trasladar nuestro sitio a Discourse.

Aunque puedas sentir que mis primeras impresiones son injustas, no mencioné ningún nombre y mantuve mis impresiones anónimas, lo que pensé era justo en ese momento. Además, considerando que mi informe de error ha sido básicamente desestimado e ignorado por meta (es decir, bueno, solo es vB3, LOL), ¿qué sería justo en tu opinión? ¿Quieres que elimine mi comentario “de advertencia” sobre los intereses comerciales?

Estoy haciendo el trabajo de la migración; y avanza, errores del script y todo, porque los errores son solo errores, cosas que hay que resolver y luego seguir adelante.

Me disculpo si durante esta prueba de migración improvisada, saliendo de una experiencia vibrante y de apoyo en Node-RED, no he estado tan impresionado como en la comunidad NR de Discourse; pero como @michaeld me respondió, dijo que no le importa si estoy “impresionado” o “no”; y eso está bien. Todos tienen derecho a su opinión. Supongo que eso incluye mi opinión/impresión inicial, ¿verdad?

Estoy muy favorablemente impresionado con Discourse y, aunque tiene errores, el script vbulletin.rb funciona lo suficientemente bien para empezar; y suficiente para divertirse, y eso es lo más importante, ¿verdad?

¡Debemos divertirnos!

Estaría un poco más feliz con meta si ustedes tomaran mis informes de error en el script vbulletin.rb más en serio; pero, de nuevo, lo entiendo. Estamos en vb3 y el mensaje es estás solo, amigo y eso es perfectamente comprensible. Lo entiendo.

Nadie piensa que vB3 sea divertido ya. LOL Especialmente YO después de más de una década, y estoy muy feliz y agradecido por Discourse para poder finalmente movernos de ese foro heredado, pasado de moda y anticuado hacia esta obra de arte online moderna, Discourse.

Solo avísame si quieres que elimine mi comentario de advertencia y lo haré, si realmente crees, después de esta respuesta, que sigue siendo injusto. Siento que fue justo, pero también doy la bienvenida a una opinión externa. Las opiniones externas son buenas y generalmente muy útiles (y eso vale para ambos lados, espero).

Saludos.

Créeme, estoy totalmente a favor de migrar las comunidades desde un software antiguo. Ese es uno de los objetivos principales de Discourse.

Es posible que podamos apoyar tu trabajo de desarrollo del script de migración de VB3 a Discourse con una subvención financiera de Discourse, si tus resultados son positivos y puedes demostrar que todo funciona :hugs:

Hola Jeff,

Gracias por la oferta, pero estoy bien de verdad; no necesito apoyo financiero.

Estoy “asegurado para toda la vida”, como se dice; y realmente no necesito más recursos financieros. Tengo suerte, como dicen, estoy verdaderamente bendecido; y no veo la vida como un juego para volverse “más y más rico”.

Nuestro sitio, según un cálculo rápido, a lo largo de sus muchos años, desde su nacimiento, hasta su punto máximo y luego hasta quedar “viejo como el pan”, ha mostrado contenido en resultados de búsqueda a más de 500 millones de usuarios únicos no registrados, quizás más; no lo rastreo tan de cerca.

Esa “buena karma” es suficiente para mí, sabiendo que hemos ayudado a tantas personas necesitadas a lo largo de nuestras largas carreras en TI. Eso es lo que realmente importa para mí (y supongo que para ti también); no se trata del dinero, sino de la “buena karma” de ayudar a otros en un foro tecnológico. Así que, cuando lo actualicemos a Discourse, será mejor para todos, sin duda. Nunca podría programar una obra de arte como Discourse. Soy un diletante multidisciplinario y, por profesión, un especialista en ciberseguridad y ingeniero de sistemas, y estoy felizmente retirado de la vida pública y profesional, en su mayoría.

La primera migración de prueba ha ido mucho mejor de lo esperado. He encontrado algunos bugs y algunos problemas únicos de nuestro sitio, como las etiquetas BBCODE personalizadas. Puedo manejarlo todo, no es un problema; y luego necesito personalizarlo para nuestra comunidad, así que habrá algo de trabajo divertido por hacer allí, y estoy ansioso por llegar allí y superar la migración 101.

En cuanto a vb3, definitivamente hay muchas comunidades heredadas de vb3 por ahí, y es genial que estés interesado en ayudarlas. Estoy de acuerdo en que vbulletin.rb no es lo suficientemente avanzado para gestionar migraciones para aquellos menos técnicos que nosotros; ya que considero que el núcleo de vbulletin.rb es “suficientemente bueno” y puedo modificarlo fácilmente (y lo he estado haciendo a medida que surgen errores).

Voy a volver a trabajar en esto; ya que tengo que cambiar algunas cosas más en vbulletin.rb para tener en cuenta los errores, los cuales he estado registrando en nuestro sitio, con gran detalle a medida que avanzo. Necesito terminar esto, y se hará más rápido si simplemente lo hago por ahora.

Gracias nuevamente por tu amable oferta. Todas las notas sobre esto, en cada paso del camino, lo bueno, lo “no perfecto” y lo genial, estarán en este enlace, que publiqué antes:

Estaré encantado de volver a participar en meta después de completar esta fase definitiva y que nuestros usuarios la prueben, para luego darnos su retroalimentación. Estoy seguro de que la mayoría querrá que nos mudemos a Discourse y dejemos atrás nuestro legado… desorden.

Gracias nuevamente por Discourse. No puedo decir suficientes cosas buenas sobre tu generoso regalo de código abierto al mundo.

Honestamente, no quiero quitarte tu valioso tiempo en esto y sé que vb3 ya no es divertido para nadie, y eso es especialmente cierto para mí mismo. Espero que el pesado ancla de barco vb3 se levante pronto de mi cuello. Puedo manejarlo, sin problema, creo.

Nuevamente, un aplauso para ti y el equipo de Discourse por Discourse, y gracias a ti y a tu equipo por el script de migración básico vbulletin.rb. Los bugs no son ningún problema en absoluto. ¡Si fuera demasiado fácil, no sería tan interesante!

De hecho, la migración ya funciona bien, pero necesito escribir más código personalizado para nuestro BBCODE personalizado, corregir algunos bugs aquí y allá y ejecutarlo todo de nuevo.

¡Gracias nuevamente!

1 me gusta

Por otro lado,

@codinghorror

Si deseas que alguien de tu equipo trabaje conmigo para corregir algunos de los errores más graves, como el error filedata debido a una tabla faltante en vb3, estaré encantado de ayudar, incluso si eso significa ralentizar el proceso, en beneficio de otras comunidades vb3 y para mejorar vbulletin.rb para vb3.

Házmelo saber. Tras pensarlo mejor, estoy dispuesto a ralentizar el ritmo y colaborar. Ciertamente, no quiero parecer egoísta ni un mal compañero de equipo en este asunto.

Para ser honesto, no soy un gran colaborador en código, pero estaré encantado de intentarlo si esto ayuda a otros usuarios heredados de vb3.

1 me gusta

Espera. Primero que nada, yo no dije eso. Dije que no estaba tratando de “impressionarte” y eso fue una respuesta a tu afirmación de que “no quedaste impresionado con mi respuesta”, la cual luego eliminaste de tu publicación. Repito: esto me entristece.

Y no importa si quedas impresionado o no, o si sientes que recibiste un trato frío o no, dijiste —a mis espaldas— que “tenía las manos extendidas buscando ganar dinero con esta migración”, lo cual simplemente no es cierto. Y luego hay muchas palabras de tu parte, pero no abordaste el hecho de que esto es simplemente falso. De hecho, lo repetiste. Y “lo siento si te sientes así” no es una disculpa.

Sigo pensando que esto no es un error y sigo creyendo que hay algo incorrecto en la forma en que tus foros se almacenan en tu base de datos, ya sea algo que está claramente “mal” o algo que era aceptable en vB3 pero no en vB4.

Nunca te pedí que ejecutaras vB4; sugerí que migraras tu base de datos a él y luego lo procesaras a través del importador. Verdadero estilo “unix”, donde se encadenan múltiples pasos para lograr el resultado deseado; en mi opinión, la ruta de migración más corta y económica.

1 me gusta

Este es el consejo correcto. ¿Hay alguna razón por la que no puedas actualizar a VB4? Porque eso podría ser más fácil que escribir un migrador completo para VB3.

1 me gusta

Micheald,

Haznos un favor a todos y por favor deja esto.

Puedo leer casi tan bien como cualquier otra persona, y lo que dijiste fue:

Quizás deberías considerar actualizar primero al menos a vB 4… el importador está dirigido principalmente a la versión 4.x.

Esto es bastante diferente de:

Te sugerí que migraras tu base de datos a él y luego la procesaras con el importador.

Simplemente déjalo, @Micheald.

Por favor, detén todo este intercambio trivial. Por favor.

Es completamente improductivo.

Lamento mucho si malinterpretaste mi sugerencia y, aún más, que hayas considerado este comentario como “improductivo”, ya que fue un consejo bienintencionado.

De verdad, nunca sugeriría que alguien ejecute su foro en vB4.

Ahora me daré de baja de este tema porque no siento que me estés tratando de manera justa.

3 Me gusta

No estoy de acuerdo. De hecho, según nuestro panel de control de miembros de vB heredado, no podemos actualizar a vB4 en absoluto.

Obviamente, dado que nuestro sitio es un usuario de vB desde hace mucho tiempo, deberíamos tener alguna idea de cómo funciona esto en el lado de vB.

Ya mencioné que actualizar a vB4 es inviable para nosotros.

Esto no lleva a ningún lado (es como un tiroteo circular, LOL), primero es “migrar a vB4”, luego es “trabajemos juntos en vB3 y divirtámonos”… luego, oh espera, “lo que queríamos decir era ‘migrad a vB4 como nos dijisteis hace días que era inviable’”.

Esto realmente no es divertido por aquí en meta, LOL.

Por favor, dejemos de lado las ideas de “simplemente actualizad vuestra BD a vB4 y la vida será genial”. He dejado claro que esto es inviable y no va a ocurrir.

MUCHÍSIMAS GRACIAS

Vedlo por vosotros mismos… no hay opción para actualizar a vB4… Es una “no opción” como he mencionado.

Debería quedar claro por esta imagen del panel de control en vB… :frowning: