Миграция с Flarum на Discourse не удалась

Я настроил всё и попытался импортировать flarum_import.rb. Но выводится сообщение:
thimira@THIMIRA:~/discourse/script/import_scripts$ bundle exec ruby flarum_import.rb Traceback (most recent call last): 1: from flarum_import.rb:3:in '`

Что мне нужно сделать? Пожалуйста, помогите.

Вам нужно включить больше вывода, чтобы кто-то мог что-то угадать, но (доказывая, что я ошибался насчет этого), строка 3:

 require "mysql2"

значит, похоже, вам нужно добавить это в Gemfile и выполнить bundle install.

Как это сделать? Я имею в виду, как добавить это в Gemfile?

Пожалуйста, проверьте личные сообщения. Я оставил там сообщение.

Сегодня нет необходимости вручную добавлять эти гемы в Gemfile — они уже там. Вам нужно просто включить их, указав IMPORT=1 перед вашей командой.

Просто выполните:

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

Если команда bundle install выдаст ошибку, возможно, также потребуется выполнить bundle config unset deployment.

Мой опыт показывает, что если вы используете IMPORT=1, вы столкнётесь с множеством сбоев, если не установите все зависимости для всего дополнительного импортируемого содержимого, а разобраться в некоторых из них довольно непросто.

Хм, у меня всё иначе — и я не понимаю, как тот или иной способ выполнения может повлиять на зависимости?

@thimiraonline, у вас получилось?

Вот пример такого:

 Произошла ошибка при установке tiny_tds (2.1.5), и Bundler не может продолжить.

А затем, если вы установите tiny_tds, что не так-то просто, вы получите:

 Произошла ошибка при установке sqlite3 (1.4.2), и Bundler не может продолжить.

Но я думаю, что если вы включите

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

то, возможно, всё заработает. Это я попробую следующим; какое-то время я создавал свои собственные шаблоны для установки этих зависимостей, но надеюсь, что выяснил, что они мне и не нужны были.

Я попробовал, но у него в настройках базы данных указан префикс таблиц, а в скрипте нет параметра для префикса. Я попросил его переименовать таблицы, и я попробую снова.

… но шаблоны импорта добавляют Gem в Gemfile, поэтому, если вы попытаетесь использовать IMPORT=1, вы получите:


[!] Произошла ошибка при парсинге `Gemfile`: Вы не можете указать один и тот же gem дважды с разными требованиями к версии.
Вы указали: sqlite3 (~> 1.3, >= 1.3.13) и sqlite3 (>= 0). Bundler не может продолжить.

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

Поскольку в Gemfile указана версия, а в шаблоне — нет.

Поэтому, несмотря на довольно упорные попытки, я не нахожу способа сделать IMPORT=1 полезным. Похоже, это сработает только на экземпляре разработки, где все зависимости установлены в операционной системе, или если вы вручную создали способ установки зависимостей внутри контейнера.

О, но импорт mbox делает гораздо больше, чем просто установку sqlite3, поэтому это не лучшее решение, если только вы действительно не хотите импортировать mbox.

Возможно, я отправлю PR с шаблоном импорта для sqlite3.

При запуске скрипта с параметром 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/zeitwerk/loader/callbacks.rb:25:in `on_file_autoloaded': expected file /home/user/discourse/lib/freedom_patches/ip_addr.rb to define constant FreedomPatches::IPAddr, but didn't (Zeitwerk::NameError)