그래서 alias_method를 수행하려고합니다 : 예외가 발생하면 내 컨트롤러에 포함 된 모듈 내에서 rescue_action_in_public하지만 FooController에서 "정의되지 않은 메소드`rescue_action_in_public'을 계속 가져옵니다. ".레일 4, 정의되지 않은 메서드`rescue_action_in_public '
이 내 모듈입니다 :이 테스트를위한
module DoSomethingToExceptions
extend ActiveSupport::Concern
included do
alias_method :rescue_action_in_public_with_some_extra_thing, :rescue_action_in_public
alias_method :rescue_action_in_public, :rescue_action_in_public_without_some_extra_thing
end
def rescue_action_in_public_with_some_extra_thing
do_something
rescue_action_in_public_without_some_extra_thing
end
end
, 나는 방금 전화 rescue_action_in_public받을 만 raise 'FooException'
을하는 메소드를 호출 내 컨트롤러에 before_filter
있습니다. 그 외에도이 모듈을 포함하여 관련된 컨트롤러 코드입니다.
저는 이것이 실제로 어떻게 작동하는지 이해하려고 노력했습니다. 이 방법을 사용하는 방법은 예외가 발생할 때 rescue_action_in_public
이 "레일스"에서 호출 된 다음이 메서드의 별칭을 지정하므로 내 별칭 메서드가 호출되며 대신 해당 프로세스에 추가 할 항목이 무엇이든 수행됩니다 , 그리고 난 rescue_action_in_public_without_some_extra_thing
을하고 나서 원래의 rescue_action_in_public
에 앨리어싱되어 있다고 말하면, 네이티브 레일스 프로세스는 계속되어야합니다.
내가 뭘 잘못하고 있니?