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에 추가하는 방법을 말씀하시는 거죠?

DM를 확인해 주세요. 거기에 메시지를 남겼습니다.

요즘에는 이러한 gems를 Gemfile에 수동으로 추가할 필요가 없으며, 이미 포함되어 있습니다. 명령어 앞에 IMPORT=1을 사용하여 활성화하기만 하면 됩니다.

아래와 같이 실행하세요.

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

bundle install 실행 시 오류가 발생하면 bundle config unset deployment도 실행해야 할 수 있습니다.

제 경험상, IMPORT=1을 설정하면 모든 추가 import 관련 항목의 의존성을 모두 설치하지 않은 경우 여러 오류가 발생하며, 그중 일부는 원인을 파악하기가 까다롭습니다.

음, 제 경험과는 좀 다르네요. 어떤 방식으로 하느냐가 어떻게 의존성에 영향을 미칠 수 있는지 이해가 안 됩니다.

@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를 계속할 수 없습니다.

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

이유는 Gemfile에 버전이 지정되어 있는 반면 템플릿에는 지정되어 있지 않기 때문입니다.

꽤 열심히 시도해 보았지만, IMPORT=1을 유용하게 만드는 방법을 찾지 못하고 있습니다. OS에 해당 의존성들을 모두 설치했거나 컨테이너에서 의존성을 설치하는 방법을 직접 구현한 개발 인스턴스에서는 작동할 것 같습니다.

아, 그런데 mbox 가져오기는 sqlite3 설치를 훨씬 더 많은 작업을 수행하므로, mbox를 실제로 가져오려는 것이 아니라면 좋은 방법이 아닙니다.

아마도 sqlite3 가져오기 템플릿에 대한 PR을 제출해 보겠습니다.

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)