Algumas reflexões.
Se a premissa da sua pergunta é se você pode fazer a transição de um desenvolvedor Python para desenvolver coisas para o Discourse, então a resposta é um pouco mais complexa.
Como você descobriu, a transição de Python para Ruby é relativamente trivial. Você pode fazer o Ruby fazer o que você faz em Python simplesmente aprendendo as diferenças semânticas.
No entanto, como eu tive que fazer o mesmo salto há alguns anos, se você simplesmente tentar fazer o que pode fazer com Python em Ruby, você perderá algumas das coisas que tornam Ruby “Ruby”.
Em segundo lugar, essa nuance do Discourse.
Embora o backend seja baseado em Ruby, uma grande parte da “complexidade” na criação de coisas para o Discourse reside no desenvolvimento do backend (Ruby) e do cliente (JavaScript/Ember) para que trabalhem em harmonia.
Mesmo com um entendimento aprofundado de como usar Ruby, você também precisa investir algum tempo na compreensão de como o backend do Discourse funciona. Existe um excelente ecossistema que o backend fornece para plugins - como acesso a dados / estruturas de dados, logging, mensagens entre processos, jobs assíncronos, etc. Achei que obter uma boa compreensão disso era importante.
Achei muito gratificante dar uma olhada no Ruby, mas achei o frontend JavaScript muito desafiador para minhas necessidades. Sou um programador hobby com alguns anos de experiência, então atribuiria isso a isso e à falta de uma mente ágil.
Dito isso, consegui entender outros frameworks JavaScript - Svelte, por exemplo. Os detalhes específicos do Ember e o fluxo rígido de instanciação / coordenação e as estruturas de pastas foram um pouco complexos para mim e para minhas necessidades.
Minha solução foi usar o excelente Custom Wizard Plugin para capturar a interação do frontend e, em seguida, passá-la para o meu código Ruby de backend. Isso funciona bem com processos em lote, mas é menos útil em ambientes interativos.
Boa sorte.