2010-02-17 5 views
23

내 응용 프로그램에서 삭제하려고 계획하고 사용량을 기록하려는 메소드 및/또는 연결에 대한 맞춤식 사용 중단 알림을 만드는 방법이 있습니까? 필자는 필자의 모델 중 하나에서 관계를 맺고 나중에 코드를 리팩토링하는 계획을 세우고 싶지 않다. 해당 메서드가 호출 될 때마다 내 개발 로그에 알림을 작성하고 싶습니다.레일 맞춤형 지원 중단 알림

특정 방법을 사용할 때 Ruby/Rails에서 비추천 통지를 보았습니다. 쉬운 방법이 있어야합니다.

뭔가 같은 ... 대부분의 경우에서

irb(main):001:0> 1.id 
(irb):1: warning: Object#id will be deprecated; use Object#object_id 
=> 3 

답변

40

당신이 사용할 수있는 3

class Example 
    def foo 
    end 

    deprecate :foo 
end 

그것은 당신의 방법 및 출력 스택 추적과 경고의 별칭을 만듭니다. 이 기능의 일부를 직접 사용할 수도 있습니다 (예 :

ActiveSupport::Deprecation.warn("Message") 

) 메시지와 함께 스택 추적을 출력합니다.

2

, 당신은 경고를 높이고 새로운 메서드를 호출 할 수 있습니다. 당신이 필요하거나 애호가 얻으려면

class Example 
    # <b>DEPRECATED:</b> Please use <tt>good_method</tt> instead. 
    def bad_method 
    warn "`bad_method` is deprecated. Use `good_method` instead." 
    good_method 
    end 

    def good_method 
    # ... 
    end 
end 

도서관 또는 메타 프로그래밍이 있지만 일반적으로 그이 간단한 뭔가를 갈 좋은 경로 아니다. 이 간단한 것에 대한 의존성을 소개하는 꽤 좋은 이유가 있어야합니다. 어쩌면

6

: 관계에 대한 그 라인을 따라

def old_relationship 
    warn "[DEPRECATION] old_relationship is deprecated." 
    @old_relationship 
end 

def old_relationship=(object) 
    warn "[DEPRECATION] old_relationship is deprecated." 
    @old_relationship = object 
end 

뭔가. "deprecate" method from ActiveSupport : 레일

1

추가 내 2 센트 :

대신 rdocYard를 사용하는 경우, 귀하의 다큐 멘 테이션 코멘트는 다음과 같아야합니다

# @deprecated Please use {#useful} instead 
당신이 tomdoc을 준수하는 경우

마지막으로, 당신의 의견을 보이게 이 같은 :

# Deprecated: Please use `useful` instead 

드 precated : 메서드가 더 이상 사용되지 않으며 이후 버전에서 제거 될 예정임을 나타냅니다. 이 메소드는 Public이었던 메소드를 문서화하는 데 사용해야하지만 다음 주요 버전에서 제거됩니다.