Novo no desenvolvimento de discourse e Rails. Estou usando o ambiente Dev Container (no VS Code) localmente. Os guias e a documentação têm sido úteis.
Gostaria de saber se alguém tem alguma dica sobre como substituir classes principais do discourse, especificamente para que isso persista em um ambiente de desenvolvimento local.
No meu plugin, estou tentando substituir um método na classe principal do discourse TopicEmbed. (usando a abordagem geral bem documentada por @angus acima.) Funciona uma vez quando reconstruo e recarrego o VS Code, mas em requisições http subsequentes, meu override nunca é invocado.
Meu override está definido em /plugins/my-plugin/app/models/override.rb e eu uso require_relative para incluir este arquivo no meu plugin.rb.
#override.rb:
class ::TopicEmbed
# um módulo que será prepended na singleton_class do TopicEmbed.
module TopicEmbedOverrideModule
# método em TopicEmbed
def first_paragraph_from(html)
Rails.logger.info(“meu override está acontecendo! ”)
# continuar com a implementação original fornecida por TopicEmbed.
super
end
end
# fazer o prepend aqui
singleton_class.prepend TopicEmbedOverrideModule
end
Suspeito que este desafio de persistência possa ser devido ao meu ambiente de desenvolvimento e como o código ruby é compilado/cacheado.
Também tentei rm -rf tmp; bin/ember-cli -u e bundle exec rake tmp:cache:clear.