레일스 플러그인을 작성하고 있습니다 (Foo라고 부름). 나는 내가 할 수 있도록이, '바'컨트롤러에 클래스 기능을 제공 할 :레일즈 플러그인에서 ActionController를 올바르게 확장하는 방법
class ApplicationController
bar ...
end
bar
는 플러그인 로딩 파일 공급 업체/플러그인/foo는/init.rb withing에에서 정의된다.
class ActionController::Base
def self.bar
...
end
end
문제와 같은 뭔가 (내 경우 ResourceController에서) 다른 플러그인 전에 foo는 액세스와 ApplicationController를로드 할 수 있다는 것입니다.
그래서 'bar'가 정의되지 않았기 때문에 ApplicationController가 'foo'플러그인 앞에로드되고 YET으로 정의됩니다.
그래서 ... 어떻게해야합니까 제대로 작동하게합니까?
ActionController (예 : inherited_resources, resource_controller)를 확장하는 다른 많은 플러그인이 정확히 똑같은 것을 알게되었으므로 누가 실패했거나 작동하는지 결정하기 위해 누가 먼저로드 할 것인가가 중요합니다.
일부 모듈에 코드를 넣고 'foo'를 호출하기 전에 모듈을 ApplicationController 코드에 수동으로 추가 할 수 있다는 것을 알고 있습니다. 나는 차라리, 나는 'foo'의 청결 함을 좋아한다.
또한 '필요'설명서를 원하지 않습니다. 플러그인은 자동로드 스스로 모든 :
아니요. ResourceController는 foo를 참조하는 ApplicationController를 참조합니다. 하지만 "bar"는 플러그인 "foo"가 ResourceController 이후에로드 된 이후로로드되지 않았습니다. –