Yammer 가져오기 PM을 가장 잘 만드는 방법

누군가를 위해 yammer 가져오기(importer)를 만들었고, 공개하기를 원합니다. (Hey @gerhard , 이건 아마 당신의 전문 분야일 것 같아요.) yammer의 인기가 왜 그런지, 그리고 곧 많은 사람들이 새로운 플랫폼을 원하게 될지, 아니면 대부분의 사람들이 플랫폼을 떠날 때 데이터가 사라지는 것을 그냥 받아들일 것인지는 정확히 파악이 안 됩니다.

yammer 내보내기(export)는 CSV 파일들의 묶음이라, 가져오기 스크립트는 script/import_scripts/base/generic_database.rb를 사용합니다. 개인 메시지(PM) 가져오기를 포함했는데, 이를 위해 generic_database.rb에 테이블 두 개를 추가해야 했습니다. 기존 코드를 억지로 PM 처리에 맞게 바꾸어 다른 가져오기 도구(zendesk, zendesk_api, answerbase)에서 사용할 때 깨질 위험을 감수하기보다는, PM을 위한 별도의 코드를 추가하는 것이 더 합리적이라고 생각했습니다. 또한 첨부 파일은 generic_database.rb를 사용하는 다른 스크립트들과는 다르게 처리되어야 하므로, 제 PM 테이블은 다른 것들이 업로드를 관리하는 방식(이 부분은 정확히 이해가 안 됐습니다)과는 다르게 업로드를 관리합니다. 범용 가져오기 도구가 사용하는 topic_upload와 post_upload 대신 별도의 업로드 테이블도 추가했습니다.

    def create_upload_table
      @db.execute <<-SQL
        CREATE TABLE IF NOT EXISTS upload (
          id #{key_data_type} NOT NULL PRIMARY KEY,
          user_id INTEGER,
          original_filename TEXT,
          filename TEXT,
          description TEXT,
          url TEXT
        )
      SQL
    end

현재 코드는 raw에서 업로드에 대한 참조를 발견하면 업로드를 처리합니다. 또한 사용자 참조를 discourse의 @username 참조로 대체합니다. 또한 기이한 opengraphobject를 처리하며, 존재하는 경우 이를 사용하여 주제 제목을 생성합니다(제가 이 스크립트를 작성한 덤프의 대부분 주제에서는 제목이 빠져 있었습니다).

질문:

  • 이 정도 설명으로 이 질문에 답할 수 있을 만큼 충분한가요?
  • 코어에 PM을 생성해야 하나요, 아니면 독립된 저장소로 포함해야 하나요 (discourse 소스 트리 안에 코드를 복사하고 거기서 실행하는 스크립트를 포함할 것입니다)
  • generic_database에 대한 추가 사항이 합리적인가요, 아니면 가져오기 스크립트에서 그 클래스에 추가해야 하나요, 아니면 제 스크립트에 추가 함수를 포함시켜 전역 @db를 참조하게 하면 될까요?

코어에 PR을 만들어놓고 거기로 가보자…

제이님,

해당 임포터가 공개되어 있나요? 그렇다면 어디서 확인할 수 있나요?

미리 감사드립니다.

존 드림

script/import_scripts/yammer.rb에 야머(Yammer) 가져오기 스크립트가 있습니다.

고마워요. 여기 있습니다: discourse/script/import_scripts/yammer.rb at main · discourse/discourse · GitHub

제이님, 안녕하세요.

처음에는 이게 Yammer용 가져오기 도구인 줄 알았어요.
하지만 코드를 읽어보니 그렇지 않네요.
Discourse용 가져오기 도구인 것 같아요.
저는 Discourse에 대해 잘 모르거든요. Discourse용 가져오기 도구에 대해 좀 알려주실 수 있을까요?

미리 감사합니다.

맞아요. 이 사이트는 Discourse를 위한 것이므로, "X 임포터"는 거의 항상 "기존 X 사이트를 Discourse로 이전하는 임포터"를 의미합니다.

Yammer 사이트를 가지고 있고 Discourse 사이트를 만들고 싶다면, 이 도구가 도움이 될 수 있습니다.