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.
