2009-03-06 11 views
8

वेब पर चारों ओर देखकर मैंने पाया कि रुबी Time कक्षा में Time#advance है। यह दस्तावेज कहां है? मैंने रूबी एपीआई दस्तावेज़ here में इसका कोई उल्लेख नहीं देखा।Time.advance कहां है?

एपीआई दस्तावेज़ों के लिए खोज फ़ंक्शन ने इंगित किया कि कहीं भी "अग्रिम" नामक कोई विधि नहीं है।

बहरहाल, आईआरबी में ...

>> t = Time.now 
=> Thu Mar 05 16:08:57 -0800 2009 
>> t.advance :months => 1 
=> Sun Apr 05 16:08:57 -0700 2009 

एक और बात है कि मुझे पहेली ... समय वर्ग के लिए किए गए दस्तावेज़ों में, पहली बात यह कहता है कि "समय वर्ग हैं कि करने के लिए एक्सटेंशन इम्प्लीमेन्ट्स time.rb लाइब्रेरी के लिए प्रलेखन में वर्णित है। "

क्या उनका मतलब है "time.rb लाइब्रेरी इस कक्षा में एक्सटेंशन लागू करता है?"

मैंने सोचा कि शायद वह समय है जहां से समय # अग्रिम आया था, लेकिन मुझे मिली सभी this थी।

उत्तर

5

यह ActiveSupport::CoreExtensions::Numeric::Time मॉड्यूल में वास्तव में है।

यह रूबी के साथ मेरी पकड़ में से एक है - ऑब्जेक्ट की हर विधि के लिए व्यापक दस्तावेज ढूंढना असंभव है, क्योंकि विधि सूची संदर्भ के आधार पर बदलती है। शक्तिशाली, अभी तक परेशान।

मैं एक बड़े रेल ऐप पर काम कर रहा हूं जिसे मैंने मूल रूप से नहीं लिखा था, और एक बार में मैं एक विधि को Google करता हूं, मुझे महसूस करने से कुछ मिनट पहले नहीं पता ... हाँ, पिछले डेवलपर ने इसे परिभाषित किया में/lib।

+1

रेल के बाहर उपयोग के लिए: टर्मिनल में: 'gem installesupport', x.rb में: 'active_support/time' की आवश्यकता है –

3

यह, समय के कई अन्य एक्सटेंशन के साथ, ActiveSupport का हिस्सा है, जिसे आपने शायद रेल के हिस्से के रूप में अधिग्रहित किया है, हालांकि पुस्तकालय अपने आप में पूरी तरह से उपयोग योग्य है।

देखें documentation

6

advance ऐसा प्रतीत नहीं होता भाषा का एक प्रमुख हिस्सा है, इसलिए दस्तावेज की कमी है। एक पैकेज का हिस्सा बनने लगता है जो रेल, ActiveSupport मॉड्यूल के साथ शामिल है।

प्रलेखन यहाँ है: http://api.rubyonrails.org/classes/Time.html#method-i-advance

+0

इससे मदद मिली! धन्यवाद! – lotif

3

यह आपका दूसरा प्रश्न है।

समय वर्ग के लिए किए गए दस्तावेज़ों में, पहली बात यह कहता है कि "समय वर्ग time.rb पुस्तकालय के लिए दस्तावेज में वर्णित करने के लिए एक्सटेंशन लागू करता है।"

क्या उनका मतलब है "time.rb लाइब्रेरी इस कक्षा में एक्सटेंशन लागू करता है?"

    रूबी में
  • :
    • time.c
    • lib/date.rb
    • lib/आरएसएस/rss.rb

समय वर्ग में कई स्थानों पर खोला जाता है

  • lib/time।rb
  • lib/YAML/rubytypes.rb
  • रेल में
  • :
    • activesupport/lib/activesupport/कोर-ext/सांख्यिक/time.rb
  • एपीआईडॉक रूबी और रेल के बीच अंतर करता है, लेकिन एक परियोजना में कई बार परिभाषित होने पर एक तत्व के आरडीओक्स को "जोड़ता है"। यदि एक तत्व के लिए कई आरडीओक्स हैं (जैसे इस मामले में टाइम क्लास), उनमें से केवल एक दिखाया गया है, और अन्य नहीं हैं। यह भ्रमित हो सकता है।

    यह पाठ:

    समय वर्ग time.rb पुस्तकालय के लिए दस्तावेज में वर्णित करने के लिए एक्सटेंशन लागू करता है।

    ... lib/time.rb से आता है। यह मानक पुस्तकालय से है और कोर लाइब्रेरी की टाइम क्लास (जिसे time.c में परिभाषित किया गया है) बढ़ाता है। तो, आपको कॉल करने की आवश्यकता है ...

    require 'time' 
    

    ... time.rb में परिभाषित एक्सटेंशन का उपयोग करने के लिए। अन्यथा आप केवल time.c. में परिभाषित विधियों का उपयोग कर सकते हैं।

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