Hilfe benötigt, um die Einstellung "Plugin aktivieren" zum Laufen zu bringen

Ich arbeite an einem Markdown-Plugin und habe Schwierigkeiten, eine Site-Einstellung hinzuzufügen, um die Funktion zu deaktivieren. Ich habe das Plugin erstellt, indem ich mich an der Struktur von Discourse Footnote orientiert habe, die eine Einstellung enthält, mit der sich das Plugin deaktivieren lässt. Ich habe das Footnote-Plugin installiert und überprüft, dass es über die Benutzeroberfläche deaktiviert werden kann und dass der entsprechende Test besteht. Wenn ich mein Plugin jedoch über die Site-Einstellungen deaktiviere, hat dies keine Wirkung, was der Unit-Test durch sein Scheitern bestätigt.

Ich bin mir nicht sicher, was ich anders mache als beim Footnote-Plugin. Es ist möglich, dass meine Verwendung von opts.features völlig falsch ist oder auf falschen Annahmen beruht, da ich an fast allen anderen Stellen einfach „footnotes“ durch „ruby“ ersetzt habe. Jede Hilfe wäre willkommen.

Das Repository finden Sie hier: GitHub - seanblue/discourse-ruby: Adds ruby markdown support to Discourse · GitHub


Zu den wichtigsten Aspekten im Zusammenhang mit der Site-Einstellung gehören:

Und dies ist der Test, der weiterhin fehlschlägt (noch nicht im Repository):

  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

Wie nicht anders zu erwarten, besagt der Fehler, dass der gekochte Text so zurückgegeben wird, als ob das Markdown noch angewendet würde.

expected: "<p>Here is some text: {漢字|かん|じ}.</p>"
     got: "<p>Here is some text: <ruby>漢<rt>かん</rt>字<rt>じ</rt></ruby>.</p>"

Was ich in solchen Fällen normalerweise tue, ist, Dinge auszudrucken.

Hast du versucht, einige interne console.log-Anweisungen hinzuzufügen, die Variablen ausgeben? Das könnte hier vielleicht etwas Licht ins Dunkel bringen. Ich bin mir ziemlich sicher, dass die Einstellungen an die Markdown-Engine gesendet werden; dein Test sieht legitim aus.

Es ist schon eine Weile her, seit ich mich wieder einmal mit dem guten alten Console-Log-Debugging beschäftigt habe. Ich werde es versuchen.

Ich bin sehr stark ein puts debugger; es ist der Mechanismus, zu dem ich die meiste Zeit zurückgreife.

Ich habe das Problem gelöst. Es lag tatsächlich an der Art und Weise, wie ich opts.features verwendet habe, wie ich vermutet hatte. Nachdem ich mir den Core-Markdown-Code angesehen hatte, wurde mir klar, dass der Feature-Name auf dem Dateinamen basiert. Meine Datei hieß markdown-ruby.js.es6, daher war der Feature-Name implizit markdown-ruby, obwohl ich im Code das Feature ruby zugewiesen hatte. Das Umbenennen der Datei in ruby.js.es6 hat das Problem behoben.

Es ist für mich immer noch etwas unklar, ob die von mir geänderten opts.features alle Features oder nur die Markdown-Teilmenge repräsentieren. Falls es alle Features sind, wirkt ruby etwas zu kurz/vage, und ich würde die Datei und das Feature aus Sicherheitsgründen in markdown-ruby umbenennen.