Besoin d'aide pour faire fonctionner une fonctionnalité de paramètre "activer le plugin"

Je travaille sur un plugin Markdown et j’ai des difficultés à ajouter un paramètre du site permettant de désactiver la fonctionnalité. J’ai écrit le plugin en suivant la structure de Discourse Footnote, qui inclut un paramètre permettant de désactiver ce plugin. J’ai installé le plugin footnote et vérifié qu’il pouvait être désactivé depuis l’interface utilisateur et que son test correspondant passait. Cependant, la désactivation de mon plugin depuis les paramètres du site n’a aucun effet, et le test unitaire le confirme en échouant.

Je ne sais pas ce que je fais différemment par rapport au plugin footnote. Il est possible que mon utilisation de opts.features soit complètement erronée ou repose sur de mauvaises hypothèses, car comme presque partout ailleurs, j’ai simplement remplacé « footnotes » par « ruby ». Toute aide serait appréciée.

Le dépôt se trouve ici : GitHub - seanblue/discourse-ruby: Adds ruby markdown support to Discourse · GitHub


Les aspects clés liés au paramètre du site incluent :

Voici le test qui échoue continuellement (pas encore dans le dépôt) :

  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

Comme prévu, l’échec indique que le texte cuit est généré comme si le Markdown était toujours appliqué.

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

Ce que je fais habituellement dans ce genre de cas, c’est commencer par imprimer des éléments.

Avez-vous essayé d’ajouter quelques instructions console.log internes pour afficher les variables ? Cela pourrait aider à éclaircir la situation. Je pense que les paramètres sont bien envoyés au moteur Markdown, votre test semble légitime.

Ça fait un bail que je n’ai pas fait du bon vieux débogage avec console.log. Je vais essayer.

Je suis très puts debugger ; c’est le mécanisme auquel je me rabats le plus souvent.

J’ai trouvé le problème. Il s’agissait en effet d’un problème lié à la façon dont j’utilisais opts.features, comme je le soupçonnais. Après avoir examiné le code markdown de base, j’ai réalisé que le nom de la fonctionnalité est basé sur le nom du fichier. J’avais nommé mon fichier markdown-ruby.js.es6, donc le nom de la fonctionnalité était implicitement markdown-ruby, même si j’attribuais la fonctionnalité ruby dans mon code. Le renommage du fichier en ruby.js.es6 a résolu le problème.

Il est encore un peu flou pour moi si opts.features que je modifie représente toutes les fonctionnalités ou seulement le sous-ensemble markdown. S’il s’agit de toutes les fonctionnalités, ruby me semble un peu trop court/vague et je pourrais renommer le fichier et la fonctionnalité en markdown-ruby juste pour être prudent.