Quello che ho fatto recentemente, non essendo ancora un esperto super come molti di voi nella creazione di app Rails, è stato pianificare quali variabili di configurazione dovrebbero essere ricaricate senza riavviare Rails e spostare quel codice nell’ApplicationController.
Sono certo che esistano modi migliori per farlo, ma dato che questa specifica implementazione Rails è un’app back-office e le prestazioni non sono un problema:
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
Sarò felice quando troverò un modo migliore per farlo!
Tuttavia, spostare questo codice fuori dagli inizializzatori di Rails significa che l’utente può modificare facilmente questa impostazione del sito, poiché ora è nel database utilizzando uno scaffold CRUD MVC di base.
Poiché la cache SQL in Rails non funziona al di fuori dell’ambito di un’azione, un giorno dovrò imparare come spostarla nella cache e assicurarmi che la cache venga cancellata quando il controller Rails elabora l’azione (ad esempio, salvare un nuovo valore nel controller delle impostazioni del sito, ecc.).
Comunque, questa app Rails del cliente (solo back-office) non è pensata per un uso ad alte prestazioni, quindi aggiungere la query all’ApplicationController funziona bene e mi evita di ripetere questo codice in ogni controller del progetto in cui è necessaria quell’impostazione del sito.