@fzngagan さん、こんにちは。私は「Rubyist」ではなく、Discourse プラグイン開発者の多くに比べて Rails の経験も浅いのですが、それでも言わせていただくと:もし本番環境(または開発環境)でアプリケーションを再起動せずにプラグイン内のファイルをリロードする必要がある場合は、将来的には以下のような方法で対応できるかもしれません。
after_initialize do
# 以下を好みのコントローラーに変更してください
# または必要であれば Application Controller を使用してください
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 を使用したシステムコードから解析されたディスク容量を表示するものです。
管理画面のビューでは:
前述の通り、私は Rubyist ではありませんが、この方法でうまくいっています。
instance.rb 内のプラグインコードを検討し、いくつかの試行錯誤の後、上記の class_eval コードを採用することにしました。これがベストプラクティスとは限りませんが、私にとっては確かに機能しています。
例えば、Discourse のバックアップを大量に削除した後にページをリロードすると、ディスク容量インジケーターが期待通りに更新されます。
