Migration de Flarum vers Discourse échouée

J’ai tout configuré et j’ai essayé d’importer flarum_import.rb. Mais il dit thimira@THIMIRA:~/discourse/script/import_scripts$ bundle exec ruby flarum_import.rb
Traceback (most recent call last):
1: from flarum_import.rb:3:in `’

Que dois-je faire ? Aidez-moi s’il vous plaît.

Il vous faudra inclure davantage de sorties pour que quiconque puisse deviner, mais (prouvant que j’ai tort à ce sujet), la ligne 3 est

 require "mysql2"

il semblerait donc que vous deviez ajouter cela au Gemfile et exécuter bundle install.

2 « J'aime »

Comment faire ? Je veux dire, comment l’ajouter au Gemfile ?

Veuillez vérifier les messages privés. J’y ai laissé un message.

Il n’est plus nécessaire d’ajouter manuellement ces gems au Gemfile de nos jours, elles y sont déjà. Il vous suffit de les activer en utilisant IMPORT=1 devant votre commande.

Alors faites simplement

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

Si bundle install vous donne une erreur, vous devrez peut-être également faire bundle config unset deployment.

1 « J'aime »

Mon expérience est que si vous faites IMPORT=1, vous obtenez un tas d’échecs si vous n’avez pas installé toutes les dépendances pour tout le contenu supplémentaire à importer, et certaines d’entre elles sont difficiles à identifier.

1 « J'aime »

Hmm, ce n’est pas mon expérience - et je ne comprends pas comment le faire d’une manière ou d’une autre pourrait influencer les dépendances ?

@thimiraonline, est-ce que cela a fonctionné pour vous ?

Des choses comme ça :

 Une erreur s'est produite lors de l'installation de tiny_tds (2.1.5), et Bundler ne peut pas continuer.

Et ensuite, si vous installez tiny_tds, ce qui n’est pas trivial, vous obtenez alors

 Une erreur s'est produite lors de l'installation de sqlite3 (1.4.2), et Bundler ne peut pas continuer.

Mais je pense que si vous incluez

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

Alors cela pourrait fonctionner. C’est ce que je vais essayer ensuite ; pendant un temps, j’ai créé mes propres modèles pour installer ces dépendances, mais j’espère avoir découvert que je n’en avais jamais eu besoin.

J’ai essayé, mais sa configuration a un préfixe de table de base de données et le script n’a aucun paramètre pour le préfixe. Je lui ai demandé de renommer les tables et j’essaierai à nouveau.

2 « J'aime »

. . . mais les modèles d’importation ajoutent le Gem au Gemfile, donc si vous essayez d’utiliser ``IMPORT=1` alors vous obtenez


[!] Une erreur s'est produite lors de l'analyse de `Gemfile` : Vous ne pouvez pas spécifier le même gem deux fois avec des exigences de version différentes.
Vous avez spécifié : sqlite3 (~> 1.3, >= 1.3.13) et sqlite3 (>= 0). Bundler ne peut pas continuer.

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

Parce que le Gemfile spécifie une version et que le modèle ne le fait pas.

Donc, après avoir essayé très fort, je ne trouve aucun moyen de rendre IMPORT=1 utile. Je suppose que cela fonctionnerait sur une instance de développement où vous avez installé toutes ces dépendances dans le système d’exploitation, ou que vous avez trouvé un moyen de les installer dans un conteneur.

Oh, mais l’importation mbox fait bien plus qu’installer sqlite3, ce n’est donc pas une bonne chose à faire à moins que vous ne vouliez vraiment importer un mbox.

Peut-être que je soumettrai une PR pour un modèle d’importation sqlite3.

2 « J'aime »

Je rencontre cette erreur lorsque j’essaie d’exécuter le script avec 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': expected file /home/user/disco urse/lib/freedom_patches/ip_addr.rb to define constant FreedomPatches::IPAddr, but didn't (Zeitwerk:: NameError)