サンプルのRubyスクリプトが使えない場合、投稿をまとめてインポートする最適な方法は?

こんにちは、旧(独自開発の)フォーラムソフトウェアから新しい Discourse フォーラムへ大量のコンテンツを移行しています。

私は Ruby のコーディングに詳しくないため、Discourse が提供するサンプルのインポートスクリプトから着手するのは現実的ではありません。そのため、すべての手順を API を呼び出して処理することにしました。

問題は、移行の過程で多くの問題に直面していることです。主にレート制限ですが、重複したフォーラムの扱いや、メッセージコンテンツがすべての「現実チェック」(例えば、投稿の最小文字数など。これは最終的に設定で ‘1’ に変更できることを突き止めました)を通過させることなどです。

他に良い選択肢はありませんか?データベースに直接データをプッシュするなどの方法は可能でしょうか?

プログラミング言語の知識がある場合は、既存のインポートスクリプトから始めるのが最適です。バulk インポートスクリプトは SQL を直接変更しますが、これらも Ruby で書かれています。

了解しました…スクリプトを確認しますね。私は他の言語でのコーディングには慣れがありますが、Ruby/RoRは初めてです。

……

GitHubにある既存のインポートスクリプトを見てきました。 :wink:
私の目には、私がこれまでにインポート処理のために書いたコードと非常に似ているように見えます。ユーザー、トピック、そしてメッセージを取得するための多数のループがあります。添付ファイルの処理には特別なコードが使われており、それぞれを個別にアップロードし、Discourse 内部の URL を取得して、それをメッセージ本文に追記しています。

これらのスクリプトで、私が何か見落としている特別な API コールやその他の有用なものはありますか?問題なのは、API を使って自分でインポートスクリプトを書けないことではなく、今のやり方が少しぎこちなく感じられ、もっとスムーズでエレガントな解決策があるのではないかと思うことです。サンプルスクリプトに、他の言語でも流用できるような「コツ」(特別な API コールなど)があれば、ぜひ理解したいです。

だからこそ、使用しないようお勧めしたのです。

へえ、はい、それはすでに確認済みですね。また、私が RoR を知らないことも確認済みです。そのため、既存のスクリプトの書き直しに時間を投資するのも私にとっては良い解決策ではありません。もし私を助けるような他のご提案があれば、ぜひお聞かせください :wink: 心からお待ちしています。ありがとうございます。

エリックさん、こんにちは。

コアとなるマイグレーションスクリプトは、素晴らしい出発点ですね。実は私も一ヶ月前までは、Ruby でのプログラミングをしたことがありませんでした。

実際、数日前にはマイグレーションを支援するためのカスタム PHP スクリプトを作成しました(PHP 歴はもう10年近くになりますが)、しかし Ruby に書き直して「なんて簡単なんだ!」と笑ってしまいました。

今では私は Ruby ファンです!

最初は Ruby が少し奇妙に思えましたが、今ではだんだん意味がわかるようになってきました。

思い切って飛び込めば、きっと大丈夫ですよ!

あるいは……ここにいるプログラマーの誰かに手伝ってもらうのも一案です!

ありがとう、そうだね、RoRの学習もリストに入ってるよ!:wink: