Migración de Flarum a Discourse fallida

He configurado todo e intenté importar flarum_import.rb. Pero dice thimira@THIMIRA:~/discourse/script/import_scripts$ bundle exec ruby flarum_import.rb
Traceback (most recent call last):
1: from flarum_import.rb:3:in <main>'

¿Qué tengo que hacer? Por favor, ayúdame.

Necesitarás incluir más de la salida para que alguien pueda adivinar, pero (demostrando que me equivoco en eso), la línea 3 es

 require "mysql2"

así que parecería que necesitas agregar eso al Gemfile y ejecutar bundle install.

2 Me gusta

¿Cómo hacer eso? Me refiero a cómo añadirlo a Gemfile?

Por favor, revisa los mensajes directos. Dejé un mensaje allí.

Hoy en día no es necesario añadir estas gemas manualmente al Gemfile, ya están ahí. Solo necesitas habilitarlas usando IMPORT=1 delante de tu comando.

Así que solo haz

IMPORT=1 bundle install
IMPORT=1 bundle exec ruby flarum_import.rb

Si bundle install te da un error, es posible que también necesites hacer bundle config unset deployment.

1 me gusta

Mi experiencia es que si haces IMPORT=1, obtienes un montón de fallos si no has instalado todas las dependencias para todo el material de importación adicional, y un par de ellas son difíciles de averiguar.

1 me gusta

Hmm, esa no es mi experiencia, y no entiendo cómo hacerlo de una manera u otra podría influir en las dependencias.

@thimiraonline, ¿te funcionó?

Cosas como esta:

 Se produjo un error al instalar tiny_tds (2.1.5) y Bundler no puede continuar.

Y luego, si instalas tiny_tds, lo cual no es trivial, obtienes

 Se produjo un error al instalar sqlite3 (1.4.2) y Bundler no puede continuar.

Pero creo que si incluyes

           - "templates/import/mysql-dep.template.yml"
           - "templates/import/mbox.template.yml"
           - "templates/import/mssql-dep.template.yml"

Entonces podría funcionar. Eso es lo que intentaré a continuación; Durante un tiempo, creé mis propias plantillas para instalar esas dependencias, pero espero haber descubierto que nunca las necesité.

Lo intenté, pero su configuración tiene un prefijo de tabla de base de datos y el script no tiene una configuración para el prefijo. Le he pedido que cambie el nombre de las tablas y lo intentaré de nuevo.

2 Me gusta

. . . pero las plantillas de importación añaden el Gem al Gemfile, así que si intentas usar ``IMPORT=1` entonces obtienes


[!] Hubo un error al analizar `Gemfile`: No puedes especificar el mismo gem dos veces con diferentes requisitos de versión.
Especificaste: sqlite3 (~> 1.3, >= 1.3.13) y sqlite3 (>= 0). Bundler no puede continuar.

#  desde /var/www/discourse/Gemfile:272
#  -------------------------------------------
#  gem 'mysql2'
>  gem 'sqlite3'
#  gem 'tiny_tds'
#  -------------------------------------------

Porque el Gemfile especifica una versión y la plantilla no.

Así que después de intentarlo bastante, no encuentro una manera de que IMPORT=1 sea útil. Supongo que funcionaría en una instancia de desarrollo donde instalaste todas esas dependencias en el sistema operativo, o creaste manualmente una forma de instalar las dependencias en un contenedor.
Oh, pero la importación de mbox hace mucho más que instalar sqlite3, así que no es algo bueno de hacer a menos que realmente quieras importar un mbox.

Quizás enviaré un PR para una plantilla de importación de sqlite3.

2 Me gusta

Estoy recibiendo este error al intentar ejecutar el script con IMPORT=1

1: from /home/user/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:28:in `require' /home/user/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/zeitwerk-2.5.4/lib/zeitw erk/loader/callbacks.rb:25:in `on_file_autoloaded': se esperaba que el archivo /home/user/disco urse/lib/freedom_patches/ip_addr.rb definiera la constante FreedomPatches::IPAddr, pero no lo hizo (Zeitwerk:: NameError)