Was ich kürzlich gemacht habe – ich bin noch nicht so ein Super-Experte wie viele von euch beim Erstellen von Rails-Apps – ist, zu planen, welche Konfigurationsvariablen neu geladen werden sollen, ohne Rails neu zu starten, und diesen Code in den ApplicationController zu verschieben.
Ich bin mir sicher, dass es bessere Wege gibt, dies zu tun, aber da diese spezielle Rails-Implementierung eine Back-Office-Anwendung ist und die Leistung kein Problem darstellt:
class ApplicationController < ActionController::Base
before_action :set_site_settings
private
def set_site_settings
@use_custom_date_format = Sitesetting.where(name: "custom_date_format").pluck(:value).last
end
end
Ich werde mich freuen, wenn ich einen besseren Weg finde, dies zu tun!
Das Verschieben aus den Rails-Initialisierern bedeutet jedoch, dass der Benutzer diese Seiteneinstellung leicht ändern kann, da sie sich jetzt in der Datenbank befindet und über ein einfaches Rails-MVC-CRUD-Scaffold verwaltet wird.
Da das SQL-Caching in Rails außerhalb des Geltungsbereichs einer Aktion nicht funktioniert, muss ich eines Tages lernen, wie man dies in den Cache verschiebt und sicherstellt, dass der Cache geleert wird, wenn der Rails-Controller die Aktion verarbeitet (z. B. einen neuen Wert im Site-Settings-Controller speichern usw.).
Wie auch immer, diese clientseitige Rails-Anwendung (nur Back-Office) ist nicht für den Hochleistungsgebrauch gedacht, daher funktioniert das Hinzufügen der Abfrage zum ApplicationController gut und erspart mir, diesen Code in jedem Controller des Projekts zu wiederholen, in dem diese Seiteneinstellung erforderlich ist.