Markdownでの投稿のインポート

Markdown をインポート時に認識させるにはどうすればよいですか?

discourse/script/import_scripts/json_generic.rb at main · discourse/discourse · GitHub を自分のデータに合わせて少し書き直しました。うまく動作しますが、インポートした投稿で Discourse に Markdown を使用させる方法がわかりません。

たとえば、投稿は次のようになります。
**ここに太字のテキスト** と、ここに別の何か
インポート後、Discourse は ** Markdown 構文を使用して「ここに太字のテキスト」の部分を太字にするのではなく、そのまま表示します。さらに奇妙なことに、通常の Discourse GUI を使用してそのような投稿を編集しようとしても、フォーマットは無視されます。

インポートスクリプトは次を使用します。
cook_method: Post.cook_methods[:raw_html],
次も試しました。
cook_method: Post.cook_methods[:regular],
目に見える変化はありませんでした。

インポート時に Discourse が Markdown を認識するようにするにはどうすればよいですか?

「いいね!」 1

投稿の最後にフォーマットされたテキストを追加しても、このテキストはフォーマットされませんか?

Rebuild HTML は何か機能しますか?

「いいね!」 1

はい、非常に奇妙です。プレビューは正しく表示されますが、編集を保存すると、書式設定されていない投稿が表示されます。

Rebuild HTML では修正されません。

データベースでの生のデータはどのような見た目になっていますか?データエクスプローラーで確認できますか?またはRailsコンソールで出力してください。

「HTMLの再構築」を実行した際に、Sidekiqで再ベイクジョブが実行されていることを確認できますか?

または、Railsコンソールで再ベイクして、エラーがないか確認できますか?

これらは単なる思いつきの提案です :person_shrugging: 投稿が調理されていないようです。

「いいね!」 1

ありがとうございます!

SELECT raw=cooked FROM posts WHERE ... を使用すると、投稿に対して true が返されます。

それが何を意味するのか、どうやって確認できるのか全く分かりません :smiley: 何かヒントをいただけますか?

bundle exec rake posts:rebake を実行しましたが、投稿は以前と同じで、編集時の動作も以前と同じです。

それは忘れてください、結局役に立ちません。

フォーマットされていない投稿の1つと同じマークダウンコンテンツを貼り付けた新しい投稿を作成します。

Discourseによって新しい投稿が正しくフォーマットされることを期待します。

次に、データエクスプローラーまたはRailsコンソールを使用して、両方の投稿の raw フィールドを比較します。

1つがクックされたときにフォーマットされ、もう1つがHTMLを再構築するとき(投稿を再ベイクする)にフォーマットされない場合、それらの生のデータには違いがあるはずです。 :thinking:

投稿を編集するとどうなりますか? 期待どおりに見えますか? 編集して保存すると正しくレンダリングされますか?

問題のある投稿の1つを取り上げ、編集モードに入り、その内容をコピーして新しい投稿を作成しました。新しい投稿はMarkdownフォーマットを使用しており、太字のテキストとタイトルの付いたリンクが表示されます。

データベースでは、それらのrawは同一ですが、cookedは異なります。

SELECT (SELECT raw FROM posts WHERE id = 13846) = (SELECT raw FROM posts WHERE id = 13735);t

SELECT (SELECT cooked FROM posts WHERE id = 13846) = (SELECT cooked FROM posts WHERE id = 13735);f

フォーマットが正しくない投稿で「HTMLの再構築」をクリックしても何も変わりません。

/logs/には、この時点では何も表示されません(古い警告とエラーのみ)。

編集すると、プレビューは正しく表示され、Markdownフォーマットが適用されます(例:「foo」)。保存すると、投稿にはフォーマット文字(例:「**foo**」)が表示されたままになります。

Railsコンソールで以下を実行し、再度「Rebuild HTML」を試していただけますか?

Post.update_all(cook_method: Post.cook_methods[:regular])

**注意:**これにより、すべての投稿が通常の調理方法を使用するように更新されます。

「いいね!」 1
/var/www/discourse$ bundle exec rails c
Loading production environment (Rails 7.0.7)
irb(main):001:0> Post.update_all(cook_method: Post.cook_methods[:regular])
=> 13809
irb(main):002:0>

完了しました!残念ながら何も変わりませんでした。


しかし、解決しました。プラグインが干渉する可能性があるため、インストールしていたプラグインについて言及しなかったことをお詫びします…

Topic Ratings Plugin をインストールし、インポート先のカテゴリで有効にしています。

気まぐれでプラグインを無効にして、「壊れた」投稿の編集を再度試みました。保存すると、Markdownフォーマットがファンシーレンダリングに使用されました。プラグインを再度有効にして、再度試したところ成功しました。新しい投稿をインポートしたところ、投稿も正しくレンダリングされました(cook_method: Post.cook_methods[:regular]を使用)。

何が起こっていたのかは全く分かりませんが、Topic Ratings Plugin を再度オン/オフすることで解決したようです。

素晴らしい提案と問題解決にご協力いただいた皆様、ありがとうございました!

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.