Ice_cube är ett rubinbibliotek för att effektivt ta hand om upprepade händelser (scheman). Kraften ligger i förmågan att indikera flera regler och få ice_cube att snabbt förstå om schemat infaller på ett specifikt datum (.occurs_on?), eller vilka tider det händer vid (.occurrences, .first, .all_occurrences). Hur man får isbit För installation använd nedanstående syntax ädelstensinstallation om du vill få koden
gem klon git://github.com/seejohnrun/ice_cubeFör att skapa icecube-schema
schema = IceCube::Schedule.new om vi vill specificera startdatum och slutdatum har vi möjlighet att specificera i ovan nämnda schema = IceCube::Schedule.new(start = Time.now, :end_time => start + 600)Dagliga scheman Efter att ha skapat ett schema har vi ett alternativ att lägga till upprepningsregel för ovannämnda schema överväga "schemalägga varje dag" på ovan nämnda tidpunkt
schema.add_recurrence_rule IceCube::Rule.dailyöverväg samma schema med upprepade "n" antal dagar
schema.add_recurrence_rule IceCube::Rule.daily(repeat_every_n_days)i stället för repeat_every_n_days har du möjlighet att ange antalet dagar Veckoscheman Återkommande regel för att generera veckoschema
schema.add_recurrence_rule IceCube::Rule.weeklyåterkommande regel för att lägga till upprepning n antal veckor med samma schema
schema.add_recurrence_rule IceCube::Rule.weekly(repeat_every_n_weeks)Tänk på ett exempel som upprepar schemat endast på vardagar (måndag till fredag)
schema.add_recurrence_rule IceCube::Rule.weekly.day(1, 2, 3, 4, 5)Varannan vecka på måndag och tisdag
schema.add_recurrence_rule IceCube::Rule.weekly(2).day(:monday, :tiesday) eller så kan du nämna som
schema.add_recurrence_rule IceCube::Rule.weekly(2).day(:monday, :tiesday)Månadsscheman upprepa samma schema varje månad
schema.add_recurrence_rule IceCube::Rule.montlyMånadsscheman (efter dag i månaden) varje månad på månadens första och sista dag
schema.add_recurrence_rule IceCube::Rule.monthly.day_of_month(1, -1)varannan månad den 15:e i månaden
schema.add_recurrence_rule IceCube::Rule.monthly(2).day_of_month(15)Varje månad (efter dag i N:te veckan) # varje månad den första och sista tisdagen i månaden
schema.add_recurrence_rule IceCube::Rule.monthly.day_of_week(:tisdag => [1, -1])# varannan månad den första måndagen och sista tisdagen
schema.add_recurrence_rule IceCube::Rule.monthly(2).day_of_week(:monday => [1],:tiesday => [-1])Årligen (efter dag på året) # varje år den 100:e dagarna från början och slutet av året
schema.add_recurrence_rule IceCube::Rule.yearly.day_of_year(100, -100)# vart fjärde år på nyårsafton
schema.add_recurrence_rule IceCube::Rule.yearly(4).day_of_year(-1)Årligen (efter månad på året) # varje år samma dag som start_time men i januari och februari
schema.add_recurrence_rule IceCube::Rule.yearly.month_of_year(:january, :februrary)# vart tredje år i mars
schema.add_recurrence_rule IceCube::Rule.yearly(3).month_of_year(:march)# för programmatisk bekvämlighet (samma som ovan)
schema.add_recurrence_rule IceCube::Rule.yearly(3).month_of_year(3)Varje timme (per timme på dygnet) # varje timme på samma minut och sekund som startdatum
schema.add_recurrence_rule IceCube::Rule.hourly# varannan timme, på måndagar
schema.add_recurrence_rule IceCube::Rule.hourly(2).day(:monday) Varje minut (var N:e minut)# var 10:e minut
schema.add_recurrence_rule IceCube::Rule.minutely(10)# varje och en halv timme, den sista tisdagen i månaden
schema.add_recurrence_rule IceCube::Rule.minutely(90).day_of_week(:tisdag => [-1])För det andra (var N:e sekund) # varje sekund
schema.add_recurrence_rule IceCube::Rule.secondly# var 15:e sekund mellan 12:00 – 12:59
schema.add_recurrence_rule IceCube::Rule.secondly(15).hour_of_day(12)Med ice_cube kan du även ange undantagstider. Exempel Upprepa varje dag utom imorgon
schema = IceCube::Schedule.new(now = Time.now) schedule.add_recurrence_rule(IceCube::Rule.daily) schema.add_exception_time(now + 1.day) listar förekomster tills end_time-förekomster = schema.occurrences(end_time)# eller de första (n) förekomsterna
schema.first(n)# eller de senaste (n) förekomsterna (om schemat avslutas)
schema.last(n)Tidszoner och ActiveSupport vs Standard Ruby Time Classes ice_cube fungerar utmärkt utan ActiveSupport men stöder bara miljöns enda "lokala" tidszon (ENV['TZ']) eller UTC. För att korrekt stödja flera tidszoner (särskilt för sommartid), bör du kräva "active_support/time". Ett schemas förekomster kommer att returneras i samma klass och tidszon som schemats start_time. Schemalagda starttider stöds som:
- Time.local (standard när ingen tid anges)
- Time.utc
- ActiveSupport::TimeWithZone (med Time.zone.now, Time.zone.local, time.in_time_zone(tz))
- DateTime (utfasad) och Date konverteras till en Time.local
yaml = schema.to_yaml IceCube::Schedule.from_yaml(yaml) hash = schema.to_hash IceCube::Schedule.from_hash(hash) ical = schema.to_ical IceCube::Schedule.from_ical(ical)Att använda dina ord ice_cube kan tillhandahålla ical- eller strängrepresentationer av individuella regler eller hela schemat.
regel = IceCube::Rule.daily(2).day_of_week(:tisdag => [1, -1], :wednesday => [2])
rule.to_ical # 'FREQ=DAILY;INTERVAL=2;BYDAY=1TU,-1TU,2WE'
rule.to_s # 'Varannan dag den sista och första tisdagen och den andra onsdagen'Läs också: En detaljerad titt på Rails 5-funktioner och ändringar : Ruby on Rails vs CakePHP- Striden fortsätter : Skrapning av webbplatser med Mechanize Gem RailsCarma har tillhandahållit ruby on rails utveckling och konsulttjänster från de senaste 8 åren Våra utvecklare är väl bevandrade i att utföra alla typer av ruby on rails utvecklingsarbete och hantera alla typer av projekt. Kontakta oss att veta mer om vår utvecklingskompetens och de projekt som vi kan hantera.
Katneni Naga Sai Tejaswi
Sr. Mjukvaruutvecklare
Prenumerera för de senaste uppdateringarna
relaterade inlägg