Planen Sie wiederkehrende Ereignisse mit Ice Cube Gem

Ice_cube ist eine Ruby-Bibliothek zur effektiven Verwaltung sich wiederholender Ereignisse (Zeitpläne). Die Stärke liegt in der Fähigkeit, mehrere Regeln anzugeben und dafür zu sorgen, dass ice_cube schnell erkennt, ob der Zeitplan auf ein bestimmtes Datum fällt (.occurs_on?) oder zu welchen Zeiten er stattfindet (.occurrences, .first, .all_occurrences). So erhalten Sie Ice Cube. Für die Installation verwenden Sie die folgende Syntax gem install, wenn Sie den Code erhalten möchten
Gem-Klon git://github.com/seejohnrun/ice_cube
Zum Erstellen eines Eiswürfelplans
Schedule = IceCube::Schedule.new Wenn wir Startdatum und Enddatum angeben möchten, haben wir die Möglichkeit, im oben genannten Zeitplan anzugeben: Schedule = IceCube::Schedule.new(start = Time.now, :end_time => start + 600)
Tagespläne Nach dem Erstellen des Zeitplans haben wir die Möglichkeit, eine Wiederholungsregel für den oben genannten Zeitplan hinzuzufügen, z. B. „Täglich planen“ zur oben genannten Zeit
Schedule.add_recurrence_rule IceCube::Rule.daily
Betrachten Sie den gleichen Zeitplan mit einer Wiederholung von „n“ Tagen
Schedule.add_recurrence_rule IceCube::Rule.daily(repeat_every_n_days)
Anstelle von „repeat_every_n_days“ haben Sie die Möglichkeit, die Anzahl der Tage anzugeben Wöchentliche Zeitpläne Wiederkehrende Regel zum Generieren eines Wochenplans
Schedule.add_recurrence_rule IceCube::Rule.weekly
Wiederkehrende Regel zum Hinzufügen von n Wochen mit dem gleichen Zeitplan
Schedule.add_recurrence_rule IceCube::Rule.weekly(repeat_every_n_weeks)
Stellen Sie sich ein Beispiel vor: Wiederholen Sie den Zeitplan nur an Wochentagen (Montag bis Freitag).
Schedule.add_recurrence_rule IceCube::Rule.weekly.day(1, 2, 3, 4, 5)
Alle zwei Wochen am Montag und Dienstag
Schedule.add_recurrence_rule IceCube::Rule.weekly(2).day(:monday, :tuesday) oder Sie können als erwähnen
Schedule.add_recurrence_rule IceCube::Rule.weekly(2).day(:monday, :tuesday)
Monatliche Zeitpläne Wiederholen Sie jeden Monat den gleichen Zeitplan
Schedule.add_recurrence_rule IceCube::Rule.montly
Monatliche Zeitpläne (nach Tag des Monats) jeden Monat am ersten und letzten Tag des Monats
Schedule.add_recurrence_rule IceCube::Rule.monthly.day_of_month(1, -1)
jeden zweiten Monat am 15. des Monats
Schedule.add_recurrence_rule IceCube::Rule.monthly(2).day_of_month(15)
Monatlich (nach Tag der N-ten Woche) # jeden Monat am ersten und letzten Dienstag des Monats
Schedule.add_recurrence_rule IceCube::Rule.monthly.day_of_week(:tuesday => [1, -1])
# alle zwei Monate am ersten Montag und letzten Dienstag
Schedule.add_recurrence_rule IceCube::Rule.monthly(2).day_of_week(:monday => [1],:tuesday => [-1])
Jährlich (nach Tag des Jahres) # jedes Jahr am 100. Tag von Anfang und Ende des Jahres
Schedule.add_recurrence_rule IceCube::Rule.yearly.day_of_year(100, -100)
# alle vier Jahre an Silvester
Schedule.add_recurrence_rule IceCube::Rule.yearly(4).day_of_year(-1)
Jährlich (nach Monat des Jahres) # jedes Jahr am selben Tag wie start_time, jedoch im Januar und Februar
Schedule.add_recurrence_rule IceCube::Rule.yearly.month_of_year(:january, :februrary)
# alle drei Jahre im März
Schedule.add_recurrence_rule IceCube::Rule.yearly(3).month_of_year(:march)
# für programmgesteuerte Bequemlichkeit (wie oben)
Schedule.add_recurrence_rule IceCube::Rule.yearly(3).month_of_year(3)
Stündlich (nach Tageszeit) # jede Stunde zur gleichen Minute und Sekunde wie das Startdatum
Schedule.add_recurrence_rule IceCube::Rule.hourly
# alle zwei Stunden, montags
Schedule.add_recurrence_rule IceCube::Rule.hourly(2).day(:monday) Minutenweise (alle N Minuten)
# alle 10 Minuten
Schedule.add_recurrence_rule IceCube::Rule.minutely(10)
# alle anderthalb Stunden, am letzten Dienstag des Monats
Schedule.add_recurrence_rule IceCube::Rule.minutely(90).day_of_week(:tuesday => [-1])
Zweitens (alle N Sekunden) # jede Sekunde
Schedule.add_recurrence_rule IceCube::Rule.secondly
# alle 15 Sekunden zwischen 12:00 und 12:59 Uhr
Schedule.add_recurrence_rule IceCube::Rule.secondly(15).hour_of_day(12)
Mit ice_cube können Sie auch Ausnahmezeiten angeben. Beispiel: Wiederholung Jeden Tag außer morgen
Schedule = IceCube::Schedule.new(now = Time.now) Schedule.add_recurrence_rule(IceCube::Rule.daily) Schedule.add_Exception_time(now + 1.day) Vorkommen auflisten bis End_Time Vorkommen = Schedule.Occurrences(End_Time)
# oder die ersten (n) Vorkommen
Schedule.first(n)
# oder die letzten (n) Vorkommnisse (wenn der Zeitplan endet)
Schedule.last(n)
Zeitzonen und ActiveSupport im Vergleich zu Standard-Ruby-Zeitklassen ice_cube funktioniert hervorragend ohne ActiveSupport, unterstützt jedoch nur die einzelne „lokale“ Zeitzone (ENV['TZ']) oder UTC der Umgebung. Um mehrere Zeitzonen korrekt zu unterstützen (insbesondere für die Sommerzeit), sollten Sie „active_support/time“ benötigen. Die Vorkommnisse eines Zeitplans werden in derselben Klasse und Zeitzone wie die start_time des Zeitplans zurückgegeben. Die Startzeiten des Zeitplans werden wie folgt unterstützt:
  • Time.local (Standard, wenn keine Zeit angegeben ist)
  • Zeit.utc
  • ActiveSupport::TimeWithZone (mit Time.zone.now, Time.zone.local, time.in_time_zone(tz))
  • DateTime (veraltet) und Date werden in eine Time.local konvertiert
Beharrlichkeit ice_cube implementiert sein eigenes Hash-basiertes .to_yaml, sodass Sie Zeitplanobjekte schnell (und sicher) in und aus Ihrem Datenspeicher serialisieren können. Es unterstützt auch die Serialisierung zu/von ICAL.
yaml = Schedule.to_yaml IceCube::Schedule.from_yaml(yaml) hash = Schedule.to_hash IceCube::Schedule.from_hash(hash) ical = Schedule.to_ical IceCube::Schedule.from_ical(ical)
Mit deinen Worten ice_cube kann ical- oder string-Darstellungen einzelner Regeln oder des gesamten Zeitplans bereitstellen.
Rule = IceCube::Rule.daily(2).day_of_week(:tuesday => [1, -1], :wednesday => [2])
Rule.to_ical # 'FREQ=DAILY;INTERVAL=2;BYDAY=1TU,-1TU,2WE'
Rule.to_s # 'Alle 2 Tage am letzten und 1. Dienstag und am 2. Mittwoch'
Lesen Sie auch: Ein detaillierter Blick auf die Funktionen und Änderungen von Rails 5 : Ruby on Rails vs CakePHP – Der Kampf geht weiter : Scraping von Websites mit Mechanize Gem SchienenCarma bereitgestellt hat Ruby on Rails-Entwicklungs- und Beratungsdienstleistungen aus den letzten 8 Jahren Unsere Entwickler sind mit der Durchführung aller Arten von Ruby-on-Rails-Entwicklungsarbeiten und der Abwicklung von Projekten jeder Art bestens vertraut. Kontaktiere uns um mehr über unsere Entwicklungskompetenzen und die Projekte zu erfahren, die wir bearbeiten können.
Katneni Naga Sai Tejaswi
Sr. Softwareentwickler

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman