Discourse 플러그인과 Rails 6 config/initializers 관련 질문

최근에 제가 한 일은, 여러분 중 많은 분들이 이미Rails 앱 구축에 있어 초급 전문가가 아니지만, Rails를 재시작하지 않고 다시 로드해야 할 설정 변수를 계획하고 해당 코드를 ApplicationController로 옮기는 것이었습니다.

더 나은 방법이 있을 것이라고 확신하지만, 이 특정 Rails 구현체는 백오피스 앱이고 성능 문제가 없기 때문에:

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

더 나은 방법을 찾게 된다면 기쁠 것입니다!

그러나 이 코드를 Rails 초기화 프로그램(initializers)에서移出하는 것은, 이제 기본 Rails MVC CRUD 스캐폴드를 사용하여 DB에 저장되므로 사용자가 이 사이트 설정을 쉽게 변경할 수 있게 해줍니다.

Rails에서 SQL 캐싱은 액션(action) 범위 밖에서는 작동하지 않으므로, 언젠가는 이 코드를 캐시로 옮기는 법을 배우고, Rails 컨트롤러가 액션을 처리할 때(예: 사이트 설정 컨트롤러에서 새 값을 저장하는 등) 캐시가 비워지도록 확인해야 합니다.

어쨌든, 이 클라이언트 Rails 앱(백오피스 전용)은 고성능 용도로 사용되지 않으므로, 애플리케이션 컨트롤러에 쿼리를 추가하는 것이 괜찮고, 프로젝트 내에서 해당 사이트 설정이 필요한 각 컨트롤러에서 이 코드를 반복하는 것을 피할 수 있습니다.