Preciso de ajuda para fazer funcionar o recurso de configuração "enable plugin"

Estou trabalhando em um plugin de Markdown e estou com dificuldades para adicionar uma configuração de site que permita desativar o recurso. Desenvolvi o plugin seguindo a estrutura de Discourse Footnote, que possui uma configuração que permite desativar esse plugin. Instalei o plugin de notas de rodapé e verifiquei que ele pode ser desativado pela interface do usuário e que seu teste correspondente passa. No entanto, desativar meu plugin nas configurações do site não tem efeito, e o teste unitário confirma isso ao falhar.

Não tenho certeza do que estou fazendo de diferente em comparação ao plugin de notas de rodapé. É possível que meu uso de opts.features esteja completamente errado ou baseado em suposições equivocadas, porque, como em quase todos os outros lugares, eu apenas substituí “footnotes” por “ruby”. Qualquer ajuda seria muito apreciada.

O repositório está aqui: GitHub - seanblue/discourse-ruby: Adds ruby markdown support to Discourse · GitHub


Os aspectos principais relacionados à configuração do site incluem:

E este é o teste que continua falhando (ainda não está no repositório):

  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

Não surpreendentemente, o erro indica que o texto processado está sendo gerado como se o Markdown ainda estivesse sendo aplicado.

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

O que eu costumo fazer nesses casos é começar a imprimir algumas coisas.

Você já tentou adicionar algumas instruções internas de console.log que exibam variáveis? Elas podem ajudar a esclarecer a situação. Acredito que as configurações sejam enviadas para o motor de markdown; seu teste parece legítimo.

Já faz um tempo que não faço aquela boa e velha depuração com console.log. Vou tentar.

Sou muito um puts debugger; é o mecanismo para o qual mais recorro na maioria das vezes.

Descobri o problema. Era, de fato, um problema com o uso de opts.features, como eu suspeitava. Depois de analisar o código principal do markdown, percebi que o nome do recurso é baseado no nome do arquivo. Eu tinha meu arquivo nomeado como markdown-ruby.js.es6, então o nome do recurso era implicitamente markdown-ruby, mesmo que eu estivesse atribuindo o recurso ruby no meu código. Renomear o arquivo para ruby.js.es6 resolveu o problema.

Ainda está um pouco pouco claro para mim se os opts.features que estou modificando representam todos os recursos ou apenas o subconjunto de recursos do markdown. Se for todos os recursos, ruby parece um pouco curto/vago e posso renomear o arquivo e o recurso para markdown-ruby apenas para garantir.