Rails 엔진에서 컨트롤러를 재정의 할 때 원본 파일이 필요합니까?
-
22-07-2019 - |
문제
나는 Rails 엔진으로 정의 된 컨트롤러에서 동작을 무시하려고합니다.
클래스를 다시 열기 전에 원본 파일을 요구 해야하는 것 같습니다.
require File.join(RAILS_ROOT, 'vendor/plugins/myplugin/app/controllers/some_controller')
class SomeController
def index
render :text => 'this is my index'
end
end
이것은 의미가 있지만 필요한 것은 매우 추악합니다. 초기 요구를 피할 수있는 일종의 레일 마법이 있습니까?
해결책
이것은 완전한 추측입니다 ...
로드 타이밍 문제가 더 많습니다. 에서와 마찬가지로 플러그인 전에 파일이로드됩니다. 당신의 행동은 어디에 있습니까? 구성/이니셜 라이저? lib?
레일 엔진이 언제로드 될지 확신하지 못하므로 위치와 함께 놀아야합니다 (LIB에 넣어야합니다).
또는 더 나은 방법으로 변경 사항으로 고유 한 플러그인을 만들고 원본 이후로드되는지 확인하십시오.
그리고 당신은 아마도 더 많은 것을 원할 것입니다.
SomeController.class_eval do
def index
...
end
end
제휴하지 않습니다 StackOverflow