Serve aiuto per far funzionare la funzionalità "abilita plugin"

Sto lavorando su un plugin markdown e ho difficoltà ad aggiungere un’impostazione del sito per disabilitare la funzionalità. Ho scritto il plugin seguendo la struttura di Discourse Footnote, che include un’impostazione per disabilitare quel plugin. Ho installato il plugin footnote e verificato che può essere disabilitato dall’interfaccia utente e che il relativo test passa. Tuttavia, disabilitare il mio plugin dalle impostazioni del sito non ha alcun effetto, e il test unitario lo conferma fallendo.

Non sono sicuro di cosa stia facendo diversamente rispetto al plugin footnote. È possibile che il mio utilizzo di opts.features sia completamente errato o basato su presupposti sbagliati, perché quasi ovunque ho semplicemente sostituito “footnotes” con “ruby”. Qualsiasi aiuto sarebbe apprezzato.

Il repository è qui: GitHub - seanblue/discourse-ruby: Adds ruby markdown support to Discourse · GitHub


Gli aspetti chiave relativi all’impostazione del sito includono:

E questo è il test che continua a fallire (non ancora nel repository):

  it "può essere disabilitato" do
    SiteSetting.enable_markdown_ruby = false

    markdown = <<~MD
      Ecco un po' di testo: {漢字|かん|じ}.
    MD

    html = <<~HTML
      <p>Ecco un po' di testo: {漢字|かん|じ}.</p>
    HTML

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

Non sorprende che l’errore indichi che il testo elaborato viene restituito come se il markdown fosse ancora attivo.

atteso: "<p>Ecco un po' di testo: {漢字|かん|じ}.</p>"
     ottenuto: "<p>Ecco un po' di testo: <ruby>漢<rt>かん</rt>字<rt>じ</rt></ruby>.</p>"

Ciò che di solito faccio in casi come questo è iniziare a stampare le cose.

Hai provato ad aggiungere alcune istruzioni console.log interne che stampano le variabili? Potrebbero aiutare a fare luce sulla situazione. Credo che le impostazioni vengano inviate al motore markdown; il tuo test sembra legittimo.

È da un po’ che non faccio un po’ di debug classico con il console.log. Proverò a farlo.

Sono davvero un puts debugger, è il meccanismo a cui ricorro più spesso.

Ho capito qual è il problema. Come sospettavo, era effettivamente legato a come stavo utilizzando opts.features. Dopo aver esaminato il codice markdown principale, ho capito che il nome della funzionalità si basa sul nome del file. Avevo il file chiamato markdown-ruby.js.es6, quindi il nome della funzionalità era implicitamente markdown-ruby, anche se nel mio codice stavo assegnando la funzionalità ruby. Rinominare il file in ruby.js.es6 ha risolto il problema.

Rimane ancora un po’ poco chiaro se opts.features che sto modificando rappresenti tutte le funzionalità o solo il sottoinsieme di quelle markdown. Se si tratta di tutte le funzionalità, ruby mi sembra un po’ troppo breve/vago e potrei rinominare il file e la funzionalità in markdown-ruby solo per sicurezza.