Ice_cube est une bibliothèque Ruby permettant de gérer efficacement les événements répétés (horaires). La force réside dans la capacité d'indiquer plusieurs règles et de permettre à ice_cube de déterminer rapidement si le calendrier tombe à une date spécifique (.occurs_on ?), ou à quelle heure il se produit (.occurrences, .first, .all_occurrences). Comment obtenir un glaçon Pour l'installation, utilisez la syntaxe ci-dessous gem install si vous souhaitez obtenir le code
clone de gemme git://github.com/seejohnrun/ice_cubePour créer un programme de glaçons
planning = IceCube::Schedule.new si nous voulons spécifier la date de début et la date de fin, nous avons la possibilité de spécifier dans le calendrier mentionné ci-dessus. planning = IceCube::Schedule.new(start = Time.now, :end_time => start + 600)Horaires quotidiens Après avoir créé le calendrier, nous avons la possibilité d'ajouter une règle de récurrence pour le calendrier mentionné ci-dessus, en considérant « planifier tous les jours » à l'heure mentionnée ci-dessus.
planning.add_recurrence_rule IceCube :: Rule.dailyconsidérons le même horaire en répétant le nombre de jours « n »
planning.add_recurrence_rule IceCube::Rule.daily(repeat_every_n_days)à la place de repeat_every_n_days, vous avez la possibilité de spécifier le nombre de jours Horaires hebdomadaires Règle récurrente pour générer un planning hebdomadaire
planning.add_recurrence_rule IceCube :: Rule.weeklyrègle récurrente pour ajouter un nombre répété de n semaines avec le même horaire
planning.add_recurrence_rule IceCube::Rule.weekly(repeat_every_n_weeks)Prenons un exemple : répétez le programme uniquement les jours de la semaine (du lundi au vendredi).
planning.add_recurrence_rule IceCube::Rule.weekly.day(1, 2, 3, 4, 5)Une semaine sur deux le lundi et mardi
planning.add_recurrence_rule IceCube::Rule.weekly(2).day(:monday, :tuesday) ou vous pouvez mentionner comme
planning.add_recurrence_rule IceCube::Rule.weekly(2).day(:lundi, :mardi)Horaires mensuels répéter le même programme chaque mois
planning.add_recurrence_rule IceCube :: Rule.montlyHoraires mensuels (par jour du mois) chaque mois le premier et le dernier jour du mois
planning.add_recurrence_rule IceCube::Rule.monthly.day_of_month(1, -1)tous les deux mois, le 15 du mois
planning.add_recurrence_rule IceCube::Rule.monthly(2).day_of_month(15)Mensuel (par jour de la Nième semaine) # tous les mois le premier et le dernier mardi du mois
planning.add_recurrence_rule IceCube::Rule.monthly.day_of_week(:tuesday => [1, -1])# tous les deux mois le premier lundi et le mardi dernier
planning.add_recurrence_rule IceCube::Rule.monthly(2).day_of_week(:monday => [1],:tuesday => [-1])Annuel (par jour de l'année) # chaque année les 100èmes jours du début et de la fin de l'année
planning.add_recurrence_rule IceCube::Rule.yearly.day_of_year(100, -100)# every fourth year on new year’s eve
planning.add_recurrence_rule IceCube::Rule.yearly(4).day_of_year(-1)Annuel (par mois de l'année) # chaque année le même jour que start_time mais en janvier et février
planning.add_recurrence_rule IceCube::Rule.yearly.month_of_year(:january, :februrary)# tous les trois ans en mars
planning.add_recurrence_rule IceCube::Rule.yearly(3).month_of_year(:mars)# pour plus de commodité programmatique (comme ci-dessus)
planning.add_recurrence_rule IceCube::Rule.yearly(3).month_of_year(3)Horaire (par heure de la journée) # toutes les heures à la même minute et seconde que la date de début
planning.add_recurrence_rule IceCube :: Rule.hourly# toutes les deux heures, le lundi
planning.add_recurrence_rule IceCube::Rule.hourly(2).day(:monday) Minutement (toutes les N minutes)# toutes les 10 minutes
planning.add_recurrence_rule IceCube::Rule.minutely(10)# toutes les heures et demie, le dernier mardi du mois
planning.add_recurrence_rule IceCube::Rule.minutely(90).day_of_week(:tuesday => [-1])Deuxièmement (toutes les N secondes) # chaque seconde
planning.add_recurrence_rule IceCube :: Rule.secondly# every 15 seconds between 12:00 – 12:59
planning.add_recurrence_rule IceCube::Rule.secondly(15).hour_of_day(12)Avec ice_cube, vous pouvez également spécifier des heures d'exception. Exemple Répéter Tous les jours sauf demain
planning = IceCube::Schedule.new(now = Time.now) planning.add_recurrence_rule(IceCube::Rule.daily) planning.add_exception_time(now + 1.day) liste les occurrences jusqu'à la fin_heure occurrences = planning.occurrences(end_time)# ou la (n) première (n) occurrence
planning.first(n)# ou les (n) dernières occurrences (si le planning se termine)
planning.last(n)Fuseaux horaires et ActiveSupport par rapport aux classes horaires Ruby standard 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 (par défaut lorsqu'aucune heure n'est spécifiée)
- Heure.utc
- ActiveSupport :: TimeWithZone (avec Time.zone.now, Time.zone.local, time.in_time_zone(tz))
- DateTime (obsolète) et Date sont convertis en Time.local
yaml = planning.to_yaml IceCube :: Schedule.from_yaml (yaml) hash = planning.to_hash IceCube :: Schedule.from_hash (hash) ical = planning.to_ical IceCube :: Schedule.from_ical (ical)Utiliser vos mots ice_cube peut fournir des représentations graphiques ou sous forme de chaîne de règles individuelles ou de l'ensemble du programme.
règle = IceCube::Rule.daily(2).day_of_week(:tuesday => [1, -1], :mercredi => [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’Lire aussi : Un aperçu détaillé des fonctionnalités et des modifications de Rails 5 : Ruby on Rails vs CakePHP - La bataille continue : Scraping de sites Web à l'aide de Mechanize Gem RailsCarma a fourni services de développement et de conseil Ruby on Rails des 8 dernières années Nos développeurs maîtrisent parfaitement toutes sortes de travaux de développement Ruby on Rails et la gestion de tout type de projet. Contactez-nous pour en savoir plus sur nos compétences en développement et les projets que nous pouvons gérer.
Katneni Naga Sai Tejaswi
Développeur de logiciels senior
Abonnez-vous pour les dernières mises à jour
Articles Similaires