आवर्ती घटनाओं के लिए मणि आइस_क्यूब

कुछ परियोजनाओं को आवर्ती घटनाओं के लिए नियमों को कॉन्फ़िगर करने में सक्षम होने के लिए उपयोगकर्ता की आवश्यकता होती है। कभी-कभी घटनाओं के नियम काफी जटिल हो सकते हैं, उदाहरण के लिए, "महीने का प्रत्येक दिन" या "निश्चित तारीख तक महीने के हर दूसरे शुक्रवार"। ऐसी समस्याओं को हल करने के लिए, आप मणि ice_cube का सफलतापूर्वक उपयोग कर सकते हैं।

मणि ice_cube आपको आईकैलेंडर के समान एपीआई का उपयोग करके आवर्ती घटनाओं के लिए नियम निर्धारित करने और यमल और रूबी हैश प्रारूपों में क्रमबद्ध / डीसर्विलाइज़ शेड्यूल करने की अनुमति देता है। Ice_cube आपको केवल एक शेड्यूल स्टोर करने की अनुमति देता है, और तुरंत पहले सैकड़ों इवेंट उत्पन्न नहीं करता है। हमने सुविधाजनक और लचीली API, निरंतर अपडेट और बग फिक्स, अन्य डेवलपर्स के बीच लोकप्रियता के कारण ice_cube को चुना।

मणि स्थापना:

gem install ice_cube 

शेड्यूल बनाने के लिए, आपको आइसक्यूब :: शेड्यूल क्लास का उपयोग करना चाहिए:

 require 'rubygems' require 'ice_cube' include IceCube # : # - /   # { # :duration => 3600 -    # :end_time => Time.now + 3600 -   # } schedule = Schedule.new(Date.today) #   schedule.add_recurrence_time(Date.today) #   schedule.add_exception_time(Date.today + 1) 

IceCube :: नियम को दोहराने के नियम बनाने के लिए उपयोग किया जाता है। Ice_cube दैनिक, साप्ताहिक, मासिक, वार्षिक, प्रति घंटा, मिनट और दूसरे दोहराव के नियमों को बनाए रखता है। उपयोग के कुछ उदाहरण (उदाहरणों की एक पूरी सूची परियोजना पृष्ठ पर पाई जा सकती है):

 #  4-  schedule.add_recurrence_rule Rule.daily(4) #   ,     schedule.add_recurrence_rule Rule.weekly(2).day(:monday, :friday) #  10, 20 ,      schedule.add_recurrence_rule Rule.monthly.day_of_month(10, 20, -1) #  ,       schedule.add_recurrence_rule Rule.monthly.day_of_week( :monday => [1], :tuesday => [-1] ) #  ,  50    100    schedule.add_recurrence_rule Rule.yearly.day_of_year(50, -100) 

अनन्य नियमों सहित कई नियमों को एक अनुसूची में जोड़ा जा सकता है:

 #  4-  /     schedule.add_recurrence_rule Rule.daily(4) schedule.add_exception_rule Rule.weekly.day(1, 5) 

नियमों के लिए, आप एक निश्चित तिथि तक दोहराव की संख्या पर सीमा निर्धारित कर सकते हैं:

 #  2- ,   schedule.add_recurrence_rule Rule.daily(2).count(10) #  2- ,    schedule.add_recurrence_rule Rule.daily(2).until(Date.today.next_month - Date.today.day) 

अब, शायद, सबसे दिलचस्प बात अनुसूची अनुरोध हैं:

 #    schedule.all_occurrences #       schedule.occurrences((Date.today + 5).to_time) #     schedule.occurs_at?(Time.now) #     schedule.occurs_on?(Date.today) #     schedule.occurs_between?(Time.now, (Date.today + 5).to_time) #    schedule.first schedule.first(3) #    schedule.next_occurrence #  3   schedule.next_occurrences(3) #    schedule.remaining_occurrences 

YAML / HASH / iCal स्वरूपों में डेटा का क्रमांकन:

 # YAML yaml = schedule.to_yaml Schedule.from_yaml(yaml) # Hash hash = schedule.to_hash Schedule.from_hash(hash) # iCalendar schedule.to_ical 

हम FullCalendar और DelayedJob के साथ पुनरावर्ती घटनाओं के एक कैलेंडर को लागू करने के लिए मणि ice_cube का उपयोग करते हैं, इस पृष्ठ पर उपयोग का एक उदाहरण देखा जा सकता है।

इस लेख के लिए कुछ उदाहरण आधिकारिक दस्तावेज से लिए गए हैं। यदि आपके पास कोई प्रश्न या टिप्पणी है, तो मुझे उनका उत्तर देने में खुशी होगी।

संदर्भ:
gitub.com/seejohnrun/ice_cube - GitHub पर प्रोजेक्ट पेज।
seejohnrun.github.com/ice_cube/static/ice_cube_ruby_nyc.pdf - ice_cube की प्रस्तुति।
seejohnrun.github.com/ice_cube/static/lsrc_ice_cube.pdf एक और प्रस्तुति है।
www.inexfinance.com/en/blog/2012/12/2/gem_ice_cube - इस लेख का अंग्रेजी संस्करण।
github.com/inex-finance/blog-examples - इस लेख से उदाहरण।

Source: https://habr.com/ru/post/In161123/


All Articles