Discourse Plugins und Rails 6 config/initializers Frage

Hallo @fzngagan, ich bin sicherlich kein „Rubyist“ und habe deutlich weniger Erfahrung mit Rails als die meisten Discourse-Plugin-Entwickler; aber dennoch: Vielleicht könnten Sie in Zukunft mit etwas Ähnlichem auskommen, wenn Sie Dateien in Ihrem Plugin neu laden müssen, ohne die Anwendung in der Produktion (oder Entwicklung) neu zu starten:

after_initialize do

  # Ändern Sie dies zu Ihrem gewünschten Controller
  # oder verwenden Sie den Application Controller, falls erforderlich

  ApplicationController.class_eval do
    before_action :do_my_stuff

    def do_my_stuff
      load File.open(FAIZAANS_FAV_FILE)
    end
  end
end

Dies lädt die Dateien wie erwartet neu.

Ich verwende dies derzeit in einem Plugin wie folgt, und es funktioniert wie erwartet:

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

Ich verwende diesen Code derzeit in einem Plugin, an dem ich von Zeit zu Zeit arbeite. Es zeigt die Namen der Container an, die aus ENV["DATA_NAME"] geparst werden, sowie den Festplattenspeicher, der mithilfe von Systemcode mit df und grep ermittelt wird.

In unseren Admin-Ansichten:

Wie erwähnt, bin ich keineswegs ein Rubyist; aber diese Methode funktioniert für mich.

Ich habe mir den Plugin-Code in instance.rb angesehen und nach einigen verschiedenen Versuchen und Irrtümern beschlossen, den oben genannten class_eval-Code zu verwenden. Es mag nicht der bevorzugte Weg sein, Dinge zu tun, aber es funktioniert definitiv für mich.

Wenn ich beispielsweise die Seite neu lade, nachdem ich viele Discourse-Backups gelöscht habe, ändert sich der Festplattenspeicher-Indikator wie erwartet.