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)
# every fourth year on new year’s eve
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
# every 15 seconds between 12:00 – 12:59
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 works great without ActiveSupport but only supports the environment’s single “local” time zone (ENV[‘TZ’]) or UTC. To correctly support multiple time zones (especially for DST), you should require ‘active_support/time’. A schedule’s occurrences will be returned in the same class and time zone as the schedule’s start_time. Schedule start times are supported as:
  • 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 # ‘Every 2 days on the last and 1st Tuesdays and the 2nd Wednesday’
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

German
English
English
Japanese
German
French
Spanish

WhatsApp uns

Beenden Sie die mobile Version