0 votes

Ruby on Rails - Utilisation des fuseaux horaires dans les tâches Rake définies pour le travail Cron

Mon application web nécessite l'exécution de 6 jobs cron différents pour mettre à jour les données sensibles au fuseau horaire dans les tables à 00:01:00 de chaque fuseau horaire. Je veux créer des tâches rake pour chaque fuseau horaire. Puis-je configurer les tâches rake pour qu'elles tiennent compte du fuseau horaire ? Par exemple, puis-je faire ce qui suit dans une tâche rake :

namespace :db do
    task :update_EST_records => :environment do
        Time.zone = "Eastern Time (US & Canada)"
        sql = "UPDATE QUERY GOES HERE WITH CREATED_AT BETWEEN ? AND ?"
        ActiveRecord::Base.establish_connection
        ActiveRecord::Base.connection.execute(sql, 
            Time.zone.now.beginning_of_day.utc, 
            Time.zone.now.end_of_day.utc)
    end
end

2voto

Simone Carletti Points 77653

Oui, c'est possible. Parce que :update_EST_records dépend de :environment vous avez alors accès à tout votre environnement Rails.

Vous n'avez même pas besoin d'appeler ActiveRecord::Base.establish_connection tant que vous exécutez la requête de mise à jour à partir de votre classe de modèle au lieu d'une requête SQL brute.

Model.update_all("...", ["CREATED_AT BETWEEN ? AND ?", value, value])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X