DiscourseとRails開発初心者です。ローカルでDev Container環境(VS Code内)を使用しています。ガイドやドキュメントは参考になりました。
コアなDiscourseクラスをオーバーライドする方法について、特にローカル開発環境で永続化させるためのヒントがあれば教えていただけますでしょうか。
プラグインで、コアなDiscourseのTopicEmbedクラスのメソッドをオーバーライドしようとしています。(上記の@angusさんが丁寧に文書化してくれた一般的なアプローチを使用しています。)VS Codeを再構築してリロードしたときは一度機能しますが、その後のHTTPリクエストではオーバーライドが呼び出されません。
オーバーライドは/plugins/my-plugin/app/models/override.rbで定義されており、plugin.rbにこのファイルをインクルードするためにrequire_relativeを使用しています。
#override.rb:
class ::TopicEmbed
# TopicEmbed.singleton_class に prepend されるモジュール
module TopicEmbedOverrideModule
# TopicEmbed のメソッド
def first_paragraph_from(html)
Rails.logger.info(“私のオーバーライドが実行されています!”)
# TopicEmbed によって提供される元の実装を続行します。
super
end
end
# ここで prepend を実行します
singleton_class.prepend TopicEmbedOverrideModule
end
この永続化の課題は、開発環境とRubyコードのコンパイル/キャッシュの方法によるものだと疑っています。
rm -rf tmp; bin/ember-cli -uやbundle exec rake tmp:cache:clearも試しました。