「プラグインを有効化」設定機能の動作に困っています

私は Markdown プラグインの開発を行っており、その機能を無効化するためのサイト設定を追加する際に問題が発生しています。私は Discourse Footnote の構造を参考にプラグインを作成しました。このプラグインには、機能を無効化できる設定が存在します。Footnote プラグインをインストールし、UI から無効化できることを確認し、対応するテストがパスすることを確認しました。しかし、私のプラグインをサイト設定から無効化しても何の影響もなく、ユニットテストが失敗することでこれが確認されています。

Footnote プラグインとの違いが何なのか分かりません。おそらく opts.features の使い方が完全に間違っていたり、誤った前提に基づいていたりするのでしょう。他の場所と同様に、単に「footnotes」を「ruby」に置き換えただけです。ご助力いただけますと幸いです。

リポジトリはこちらです:GitHub - seanblue/discourse-ruby: Adds ruby markdown support to Discourse · GitHub


サイト設定に関連する主要な部分は以下の通りです:

そして、これが失敗し続けているテストです(まだリポジトリには含まれていません):

  it "can be disabled" do
    SiteSetting.enable_markdown_ruby = false

    markdown = <<~MD
      Here is some text: {漢字|かん|じ}.
    MD

    html = <<~HTML
      <p>Here is some text: {漢字|かん|じ}.</p>
    HTML

    cooked = PrettyText.cook markdown.strip
    expect(cooked).to eq(html.strip)
  end

予想通り、失敗メッセージは Markdown がまだ適用されたままの状態で調理されたテキストが返されていることを示しています。

expected: "<p>Here is some text: {漢字|かん|じ}.</p>"
     got: "<p>Here is some text: <ruby>漢<rt>かん</rt>字<rt>じ</rt></ruby>.</p>"
「いいね!」 3

このような場合、私がいつもやるのは、まず何かを出力して確認することです。

内部の console.log ステートメントを追加して変数を出力してみましたか?これで状況が明確になるかもしれません。設定はマークダウンエンジンに送信されていると思いますし、あなたのテストも正当なように見えます。

「いいね!」 1

久しぶりに昔ながらのコンソールログを使ったデバッグをやってみることにします。試してみます。

「いいね!」 1

私はまさに puts デバッガー です。それは私が最も頻繁に頼るデバッグ手法です。

問題の原因が分かりました。予想通り、opts.features の使い方に問題があったのです。core markdown code を確認したところ、機能名はファイル名に基づいていることに気づきました。私のファイル名を markdown-ruby.js.es6 にしていたため、コード内で ruby という機能を割り当てていたにもかかわらず、機能名は暗黙的に markdown-ruby となっていました。ファイル名を ruby.js.es6 に変更したところ、問題が解決しました。

ただし、私が変更している opts.features がすべての機能を表すのか、それとも Markdown の機能サブセットのみを表すのか、まだ少し不明確です。もしすべての機能であれば、ruby という名前は短すぎて曖昧に感じられるため、安全策としてファイル名と機能名を markdown-ruby に変更するかもしれません。

「いいね!」 5