2011-09-27 4 views
4

include 함수를 통해 클래스에 추가되는 클래스 메서드를 제거하고 싶습니다. 예를 들면 다음과 같습니다.다른 모듈에 포함 된 클래스 메서드 제거/정의 해제

class Foo 
    include HTTParty 

    class << self 
     remove_method :get 
    end 
end 

"get"은 Foo의 메소드가 아닙니다. 기본적으로, "get"메소드는 HTTParty 모듈을 제공하고 그것을 제거하고 싶습니다. 나는 운이없는 여러 시도를 시도했다. 내가 읽은 것들/시도 :

+0

왜 궁금한가요? 왜'get' 메소드를 제거 하시겠습니까? –

답변

8

사용 undef 대신 remove_method을 :

require 'httparty' 

class Foo 
    include HTTParty 
    class << self 
    undef :get 
    end 
end 

Foo.get #=> NoMethodError: undefined method `get' for Foo:Class 

는 m을 취소합니다 ethod 정의. Undef는 본문 메서드에 나타날 수 없습니다. undef와 alias를 사용하면, 클래스의 인터페이스는 수퍼 클래스와 독립적으로 수정 된 일 수 있지만, 자체 메소드 호출로 프로그램을 깨뜨릴 수 있습니다. http://web.njit.edu/all_topics/Prog_Lang_Docs/html/ruby/syntax.html#undef

관련 문제