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

@fzngagan 님, 저는 확실히 "rubyist"는 아니며 대부분의 Discourse 플러그인 개발자보다 Rails에 대한 경험이 훨씬 적습니다. 하지만 그렇다고 해서: 만약 프로덕션(또는 개발) 환경에서 애플리케이션을 재시작하지 않고 플러그인 파일을 리로드해야 한다면, 앞으로 다음과 같은 방법으로 해결할 수 있을 것입니다:

after_initialize do

  # 아래 코드를 원하는 컨트롤러로 변경하거나
  # 필요 시 application controller를 사용하세요

  ApplicationController.class_eval do
    before_action :do_my_stuff

    def do_my_stuff
      load File.open(FAIZAANS_FAV_FILE)
    end
  end
end

이렇게 하면 예상대로 파일이 리로드됩니다.

현재 저는 아래처럼 플러그인에서 이 방법을 사용하고 있으며, 예상대로 잘 작동합니다:

after_initialize do

  Admin::AdminController.class_eval do
    before_action :do_neo_plugin_info

    def do_neo_plugin_info
      load File.open(PLUGIN_LOGIC)
    end
  end
end

현재 저는 때때로 작업하고 있는 플러그인에서 이 코드를 사용 중인데, 이 플러그인은 ENV["DATA_NAME"]에서 파싱된 컨테이너 이름과 df 및 grep을 사용하여 일부 시스템 코드에서 파싱된 디스크 공간을 표시합니다.

관리자 뷰에서:

aforementioned 대로, 저는 어떤 의미에서도 Rubyist가 아닙니다. 하지만 이 방법은 저에게는 잘 작동합니다.

instance.rb의 플러그인 코드를 확인하고 여러 가지 시행착오를 거친 후, 위에서 언급한 class_eval 코드를 사용하기로 결정했습니다. 이것이 가장 권장되는 방식은 아닐 수 있지만, 제 경우에는 확실히 작동합니다.

예를 들어, 많은 Discourse 백업을 삭제한 후 페이지를 리로드하면 디스크 공간 표시기가 예상대로 변경됩니다.