После обновления до версии Release v2.4.0.beta2 · discourse/discourse · GitHub почти все наши плагины (например, предпросмотр списков тем, события, локации, рейтинги и т. д.) столкнулись с проблемой в методе add_to_serializer файла plugin.rb.
Существующее использование следовало этому формату:
add_to_serializer(:serializer, property) { value }
Это больше не работает в производственной среде. В среде разработки оно по-прежнему функционирует.
Сначала я подумал, что это может быть связано с тем, как обрабатывается включение плагинов. Поскольку метод _include? у add_to_serializer использует состояние enabled?:
if define_include_method
# Не включать сериализованные методы, если плагин отключен
klass.public_send(:define_method, "include_#{attr}?") { plugin.enabled? }
end
Однако использование системы enabled_site_setting не кажется решением проблемы. Более того, enabled? по-прежнему, похоже, по умолчанию возвращает true:
def enabled?
@enabled_site_setting ? SiteSetting.get(@enabled_site_setting) : true
end
Чтобы решить эту срочную проблему, мы изменили способ сериализации данных нашими плагинами, но, если возможно, я хотел бы разобраться в корне проблемы. Есть ли у кого-нибудь идеи, что здесь происходит?
cc @merefield, @fzngagan