@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 백업을 삭제한 후 페이지를 리로드하면 디스크 공간 표시기가 예상대로 변경됩니다.
