Новичок в разработке Discourse и Rails. Я использую локальную среду Dev Container (в VS Code). Руководства и документация были полезны.
Хотелось бы узнать, есть ли у кого-нибудь советы по переопределению основных классов Discourse, особенно в части обеспечения их сохранения в локальной среде разработки.
В моем плагине я пытаюсь переопределить метод в основном классе Discourse TopicEmbed (используя общий подход, хорошо описанный @angus выше). Это работает один раз после пересборки и перезагрузки VS Code, но при последующих HTTP-запросах мой переопределенный метод никогда не вызывается.
Мое переопределение определено в /plugins/my-plugin/app/models/override.rb, и я использую require_relative для включения этого файла в plugin.rb.
#override.rb:
class ::TopicEmbed
# модуль, который будет добавлен в TopicEmbed.singleton_class
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.