vBulletin 5 가져오기 오류(웹사이트 필드에 잘못된 문자) 및 첨부 파일 관련 질문

안녕하세요!

3년 전 첫 번째 오래된 포럼을 phpbb에서 가져온 이후, 국제 커뮤니티의 포럼 관리자가 또 다른, 더 큰 포럼(180,000명의 회원, 160만 개의 메시지)을 Discourse로 마이그레이닝하도록 독려하게 되어 기쁩니다. :tada:

이 포럼은 vBulletin5를 사용하고 있습니다.

사용자 71,712번까지 가져오기가 잘 진행되었는데, 그 이유는 웹사이트 필드에 잘못된 문자가 포함되어 있었기 때문입니다:

:website=>"http://url-redacted.com - æåñòêîå ïîðíî ñìîòðåòü îíëàéí",

그 결과 두 가지 오류 메시지가 발생했습니다:

1: from /usr/local/rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/uri/rfc3986_parser.rb:73:in `parse' /usr/local/rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/uri/rfc3986_parser.rb:21:in `split': URI must be ascii only "http://url-redacted.com - \u00E6\u00E5\u00F1\u00F2\u00EA\u00EE\u00E5 \u00EF\u00EE\u00F0\u00ED\u00EE \u00F1\u00EC\u00EE\u00F2\u00F0\u00E5\u00F2\u00FC \u00EE\u00ED\u00EB\u00E0\u00E9\u00ED" (URI::InvalidURIError)

그리고:

1: from /usr/local/rvm/gems/ruby-2.6.5/gems/addressable-2.7.0/lib/addressable/uri.rb:2394:in `defer_validation' /usr/local/rvm/gems/ruby-2.6.5/gems/addressable-2.7.0/lib/addressable/uri.rb:2475:in `validate': Invalid character in host: 'url-redacted.com.com - æåñòêîå ïîðíî ñìîòðåòü îíëàéí' (Addressable::URI::InvalidURIError)

URL이 "ascii만"이어야 한다면, 오류를 발생시키고 스크립트를 중단시키기 대신 필드 내용을 단순히 삭제하거나 정리(sanitize)할 수는 없을까요? :thinking:
다시 가져오기를 시도하기 전에 이 사용자를 데이터베이스에서 제거해 보겠습니다.

그리고 또 다른 질문이 있습니다. 아바타는 데이터베이스에 저장되어 있었고 성공적으로 가져와졌습니다.

그렇다면 첨부파일은 어떨까요? 제 경우처럼 vBulletin의 기본 설정에 따라 데이터베이스에 저장되어 있습니다. 첨부파일도 가져와지나요, 아니면 별도의 필드로 저장되어야 하나요?

안녕하세요 @Canapin

저희가 기존 vB3 포럼을 이전할 때, 15년간 쌓인 게시물에서 기이한 문자 깨짐(mojibake)이나 특이한 첨부 파일이 데이터베이스를 오염시켜 마이그레이션 스크립트에서 수많은 오류가 발생했습니다.

우리가 취한 방법은 아주 우아하지는 않았지만, 실제로 효과가 있었습니다:

이러한 오류에 부딪혔을 때, 저는 단순히 오류가 발생한 마이그레이션 스크립트 부분을 편집하여 문제의 행을 다음과 같이 감쌌습니다.

begin
# 문제의 ruby 코드 행
rescue
puts "여기에는 흥미로운 문제 정보가 출력됩니다"
end

약 100만 개의 vB3 게시물을 Discourse로 이전하는 과정에서 제 최고의 친구가 되어 준 코드는 다음과 같습니다:

begin
rescue
end

형식이 잘못된 몇몇 게시물을 잃었지만, 100만 개 중 손에 꼽을 만큼의 게시물을 포기하는 것은 저에게는 괜찮았습니다.

도움이 되길 바랍니다.

레일즈를 잘 모르기 때문에, 웹사이트 필드 내용을 빈 문자열로 대체했습니다. 어차피 스팸 계정이었으며, 이미 처리된 절반 이상의 사용자 중 유일한 오류였습니다.

따라서 스크립트 코드에서 수정되지 않더라도 큰 문제는 아니지만, 가져오기를 막지 않는다면 좋겠습니다 :wink:

첨부 파일의 경우, 그 전에 관련 정보를 얻지 못하면 메시지를 가져오기를 시도해 보고, 첨부 파일이 가져와지는지(또는 오류 메시지가 발생하는지) 확인해 보겠습니다.

@Canapin 님, 안녕하세요.

저희도 vB3 첨부 파일을 Discourse로 가져올 때 Ruby의 begin rescue end 래퍼를 작성해야 했지만, 결국 거의 모든 첨부 파일과 아바타, 프로필 이미지가 성공적으로 마이그레이션되었습니다.

시작할 당시 저는 Ruby와 Rails에 대한 경험이 전혀 없었지만, 지금은 Discourse 덕분에 Ruby와 Rails의 열렬한 팬이 되었고, 매일 조금씩 Rails 코드를 작성하고 있습니다.

관심만 있다면 마이그레이션 과정에서 조금씩 배우는 것도 좋다고 생각합니다.