Plugins do Discourse e configuração/inicializadores do Rails 6: Pergunta

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.