Привет, @fzngagan, я определённо не «рубист» и имею гораздо меньше опыта работы с Rails, чем большинство разработчиков плагинов для Discourse; но, тем не менее: возможно, в будущем, если вам потребуется перезагружать файлы в вашем плагине без перезапуска приложения в продакшене (или в режиме разработки), вы сможете обойтись чем-то вроде этого:
after_initialize do
# измените следующее на ваш контроллер по выбору
# или используйте контроллер приложения, если это необходимо
ApplicationController.class_eval do
before_action :do_my_stuff
def do_my_stuff
load File.open(FAIZAANS_FAV_FILE)
end
end
end
Это позволит перезагружать файлы, как и ожидалось.
В настоящее время я использую это в плагине следующим образом, и это работает как надо:
after_initialize do
Admin::AdminController.class_eval do
before_action :do_neo_plugin_info
def do_neo_plugin_info
load File.open(PLUGIN_LOGIC)
end
end
end
Я использую этот код в плагине, над которым работаю время от времени, который отображает имена контейнеров, полученные из ENV["DATA_NAME"], а также свободное место на диске, полученное с помощью системного кода, использующего df и grep.
В наших административных представлениях:
Как уже упоминалось, я отнюдь не рубист; но этот метод работает для меня.
Я изучил код плагина в instance.rb и после нескольких проб и ошибок решил использовать приведённый выше код с class_eval. Возможно, это не самый предпочтительный способ, но он определённо работает для меня.
Например, если я перезагружаю страницу после удаления множества резервных копий Discourse, индикатор свободного места на диске изменяется, как и ожидалось.
