O que fiz recentemente, ainda não sendo um super especialista como muitos de vocês na criação de aplicações Rails, foi planejar quais variáveis de configuração deveriam ser recarregadas sem reiniciar o Rails e mover esse código para o ApplicationController.
Tenho certeza de que existem maneiras melhores de fazer isso, mas como essa implementação específica do Rails é um aplicativo de back-office e o desempenho não é um 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
Ficarei feliz quando encontrar uma maneira melhor de fazer isso!
No entanto, mover isso para fora dos inicializadores do Rails significa que o usuário pode alterar essa configuração do site facilmente, pois agora ela está no banco de dados usando um scaffold básico de CRUD do Rails MVC.
Como o cache SQL no Rails não funciona fora do escopo de uma ação, um dia precisarei aprender a mover isso para o cache e garantir que o cache seja limpo quando o controlador do Rails processar a ação (por exemplo, salvar um novo valor no controlador de configurações do site, etc.).
De qualquer forma, este aplicativo cliente do Rails (apenas para back-office) não é para uso de alto desempenho, então adicionar a consulta ao controlador da aplicação funciona bem e me poupa de repetir esse código em cada controlador do projeto onde essa configuração do site é necessária.