2010-02-17 11 views
23

क्या मेरे आवेदन में विधियों और/या संगठनों के लिए कस्टम बहिष्करण नोटिस बनाने का कोई तरीका है जिसे मैं हटाने और उनके उपयोग को लॉग करना चाहता हूं? मेरे मॉडल में से एक में मेरा रिश्ता है कि मैं आगे बढ़ने और कोड को बाद में कोड को दोबारा करने की योजना नहीं बनाना चाहता हूं। जब भी विधि कहा जाता है, मैं अपने विकास लॉग में एक नोटिस बनाना चाहता हूं।रेल कस्टम डिप्रेशन नोटिस

कुछ तरीकों का उपयोग करते समय मैंने रुबी/रेल में बहिष्करण नोटिस देखा है, और आंकड़े यह करने का एक आसान तरीका होना चाहिए।

कुछ की तरह ...

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

उत्तर

40

रेल में 3 आप का उपयोग कर सकते हैं: "deprecate" method from ActiveSupport:

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 

अगर आप की जरूरत है सजावटी प्राप्त करना चाहते हैं पुस्तकालयों या metaprogramming हैं, लेकिन सामान्य रूप में है कि कुछ इस सरल के लिए जाने के लिए एक अच्छा मार्ग नहीं है। इस सरल के लिए निर्भरता पेश करने के लिए आपके पास एक बहुत अच्छा कारण होना चाहिए।

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 

कुछ।

1

जोड़ा जा रहा है मेरी 2 सेंट:

आप rdoc के बजाय Yard उपयोग कर रहे हैं, अपने दस्तावेज़ टिप्पणी इस तरह दिखना चाहिए:

# @deprecated Please use {#useful} instead 

अंत में, यदि आप tomdoc का पालन, अपनी टिप्पणी देखो बनाने इस तरह:

# Deprecated: Please use `useful` instead 

डी सटीक: इंगित करता है कि विधि बहिष्कृत है और भविष्य के संस्करण में हटा दी जाएगी। आपको इसका उपयोग दस्तावेज़ विधियों के लिए करना चाहिए जो सार्वजनिक थे लेकिन अगले बड़े संस्करण में हटा दिए जाएंगे।

संबंधित मुद्दे