Migrate a phpBB3 forum to Discourse

이것을 우회할 방법이 있을까요? 많은 포럼에서는 더 이상 접근할 수 없는 이메일 주소로 가입한 사용자가 있으며, 그들은 10자 미만의 비밀번호를 사용하고 있습니다.

1개의 좋아요

사이트 설정에서 최소 비밀번호 길이를 8로 변경할 수 있습니다.

비밀번호를 사용할 수 없는 사용자에게 로그인 링크 또는 비밀번호 재설정 링크를 전송할 수 있습니다.

2개의 좋아요

네, migratepassword allow insecure passwords라는 사이트 설정이 있습니다. 이를 활성화하시면 됩니다.

이 설정은 가져오기(Import) 후에 활성화해야 하며, 가져오기 중에는 활성화하지 마세요.

4개의 좋아요

5개의 게시글이 새 주제로 분리되었습니다: Accent characters missing

rank_mapping:
   trust_level_1: 200
   trust_level_2: 1000
   trust_level_3: 3000

이것이 정확히 어떻게 작동하나요? phpBB에서(총 게시물 수만 기준으로 설정할 수 있는) 사용자 지정 계급을 직접 만들어야 하는지, 아니면 가져오기(importer)가 모든 사용자의 총 게시물 수를 확인하여 Discourse에서 그에 따라 신뢰 수준을 자동 배정하는 건가요?

감사합니다! :slight_smile:

1개의 좋아요
# Rank to trust level mapping
  #
  # Map phpBB 3.x rank levels to trust level
  # Users with rank at least 3000 will have TL3, etc.
      trust_level = @settings.trust_level_for_posts(row[:user_posts], trust_level: trust_level)

즉, 사용자가 작성한 게시글 수를 다양한 신뢰도 레벨(TL)에 매핑하는 것입니다. 제 생각에는 모든 사용자를 TL1로 설정하고, 거기서부터 Discourse의 레벨을 따라가게 하는 것이 좋습니다. TL2에 도달하는 것은 그렇게 어렵지 않으니까요.

하지만 어느 시점에는 Discourse로 이주하는 과정에서 사용자들의 신뢰도 레벨을 조정하는 것이 중요하다고 판단한 사람이 있었고, 개발자는 그들과 논쟁하는 것보다 코드로 구현하는 것이 더 쉽다고 생각했던 것 같습니다. :slight_smile:

4개의 좋아요

네, 맞습니다. 저도 그렇게 하는 편이 좋습니다. 기능이 제대로 이해되었는지 확인하고 싶었을 뿐입니다. :slight_smile:

3개의 좋아요

IMPORT=1가 잘못된 것처럼 ruby-bbcode-to-md를 설치하지 않습니다.

mike@ubuntu:~/discourse/script/import_scripts$ IMPORT=1 bundle exec ruby phpbb3.rb phpbb3/settings.yml
Traceback (most recent call last):
	40: from phpbb3.rb:13:in `<main>'
	39: from phpbb3.rb:14:in `<module:ImportScripts>'
	38: from phpbb3.rb:15:in `<module:PhpBB3>'
	37: from phpbb3.rb:15:in `require_relative'
	36: from /home/mike/discourse/script/import_scripts/phpbb3/support/settings.rb:5:in `<top (required)>'
	35: from /home/mike/discourse/script/import_scripts/phpbb3/support/settings.rb:5:in `require_relative'
	34: from /home/mike/discourse/script/import_scripts/base.rb:16:in `<top (required)>'
	33: from /home/mike/discourse/script/import_scripts/base.rb:16:in `require_relative'
	32: from /home/mike/discourse/config/environment.rb:7:in `<top (required)>'
	31: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/application.rb:372:in `initialize!'
	30: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:60:in `run_initializers'
	29: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
	28: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
	27: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
	26: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:347:in `call'
	25: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:347:in `each'
	24: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
	23: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
	22: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	21: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
	20: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	19: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:32:in `run'
	18: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:32:in `instance_exec'
	17: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/application/finisher.rb:68:in `block in <module:Finisher>'
	16: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/reloader.rb:88:in `prepare!'
	15: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:106:in `run_callbacks'
	14: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:595:in `invoke_before'
	13: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:595:in `each'
	12: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:595:in `block in invoke_before'
	11: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:200:in `block in halting'
	10: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:686:in `block in default_terminator'
	 9: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:686:in `catch'
	 8: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:687:in `block (2 levels) in default_terminator'
	 7: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
	 6: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:445:in `block in make_lambda'
	 5: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:445:in `instance_exec'
	 4: from /home/mike/discourse/config/initializers/002-freedom_patches.rb:9:in `block in <main>'
	 3: from /home/mike/discourse/config/initializers/002-freedom_patches.rb:9:in `each'
	 2: from /home/mike/discourse/config/initializers/002-freedom_patches.rb:11:in `block (2 levels) in <main>'
	 1: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:31:in `require'
/home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/zeitwerk-2.6.6/lib/zeitwerk/loader/callbacks.rb:25:in `on_file_autoloaded': expected file /home/mike/discourse/lib/freedom_patches/copy_file.rb to define constant FreedomPatches::CopyFile, but didn't (Zeitwerk::NameError)

부끄러움 없이 스레드를 띄워봅니다… 곧 phpBB 마이그레이션을 두 번 더 해야 하기 때문이죠 (가능하면 Discourse를 적극 추천하는 중입니다 :partying_face:). 전혀 급하지 않습니다.
마이그레이션은 몇 달, 혹은 그 이상 기다려도 괜찮지만 이 정보에 대해 어떤 소식이라도 있으시면 알려주시면 좋겠습니다 :slight_smile:

2개의 좋아요

음, 2022년은 좀 낙관적이었네요… :blush: 다른 작업들이 할 일 목록 맨 앞으로 밀려들어서요. 하지만 상황이 좀 풀리고 있어서 2023년에는 뭔가 진행될 것 같습니다. 그리고 hopefully 최대한 빨리요. :crossed_fingers:

3개의 좋아요

3.3 버전으로 보이는 phpBB 포럼에 대한 가져오기를 방금 실행해 보았습니다. 대체로 잘 작동했습니다(그들이 사용하던 Solved 플러그인과 일부 [tex2] 태그는 $$로 교체해야 했지만, 이건 작동하지 않을 거라고 예상하고 있었습니다). 포럼 규모가 매우 크지 않다면(25,000명의 사용자와 약 300,000개의 게시글이 그렇게 빠른 하드웨어가 아닌 환경에서 17시간이 걸렸습니다), 일단 시도해 볼 수 있을 것입니다.

4개의 좋아요

네, 정보 주셔서 감사합니다!
하지만 변경된 내용에 대해 정말 궁금합니다. 마이그레이션을 수행할 특정 날짜가 없으니, 코드를 보고 실제로 작동하는 모습을 보고 싶습니다 :slight_smile:

1개의 좋아요

안녕하세요, 여기 처음 오고 있어서 어리석은 질문을 해서 죄송합니다:

설정 파일 settings.yml의 site_name 파라미터에는 정확히 무엇을 입력해야 하나요? 여기에서 무엇을 요구하는지 이해가 되지 않습니다. 다음과 같은 오류가 발생했습니다:

The phpBB3 import is starting...

/var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:49:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)

      @site_name = import_settings["site_name"]
                                  ^^^^^^^^^^^^^
	from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:11:in `new'
	from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:11:in `load'
	from script/import_scripts/phpbb3.rb:20:in `<module:PhpBB3>'
	from script/import_scripts/phpbb3.rb:16:in `<module:ImportScripts>'
	from script/import_scripts/phpbb3.rb:15:in `<main>'

저는 포럼 하나만(phpBB 버전 3.3.8) 가져오려고 하고 있습니다. 빈칸으로 두거나 'first’나 ‘domain.com’ 같은 값을 입력해도 여전히 이 오류가 발생합니다.
도와주셔서 감사합니다.

무엇이든 입력하면 됩니다. 빈 문자열도 괜찮습니다.

그렇다면 잘못된 위치에 설정하고 있거나 오타가 있는 것 같습니다.

2개의 좋아요

답변해 주셔서 감사합니다. settings.yml 파일을 처음부터 다시 만들고, GitHub에서 원본 코드를 복사해 넣었더니 이제 완벽하게 작동합니다 :+1:

3개의 좋아요

20개의 게시물이 새 주제로 분리되었습니다: phpbb에서 마이그레이션 (설치된 버전 히스토리: 3.2.1 - 3.2.8) 및 postgresql 데이터베이스

그것이 사실이 아닌 것으로 드러났습니다. 모든 스크립트를 bulk_import 스타일의 스크립트로 전환할 계획인가요? 그 타임라인에 대한 새로운 예상치가 있나요?

3개의 좋아요

네, 대략 그런 계획입니다. 아쉽게도 현재 최우선 순위가 아니므로 언제 출시될지 말하기 어렵지만, 향후 6~12개월 내에 가져오기(import) 기능을 개선할 계획입니다. 그때까지 사용 가능한 무언가가 나올 수 있기를 바랍니다.

3개의 좋아요

또 다른 간단한 개선 사항에 대한 PR입니다. phpbb 첨부 파일에는 게시물의 첨부 파일 아래에 표시되는 텍스트 코멘트가 있습니다.

이 기능을 지원하도록 추가했습니다. 이제 discourse에서 이미지 아래에 이 코멘트를 이탤릭체로 표시합니다.

4개의 좋아요