2016-09-23 5 views
0

Ich habe den folgenden Dienst, der mir eine Array Mapping Monat/Woche/heute zu einem Zeitpunkt zur Verfügung stellt.Zeit im Produktionsmodus zwischengespeichert

module Admin 
    class TimeService 
    INTERVAL_TIME = [ 
     { :id => "month", :from => Time.zone.now.beginning_of_month }, 
     { :id => "week", :from => Time.zone.now.beginning_of_week }, 
     { :id => "today", :from => Time.zone.now.beginning_of_day } 
    ] 
    end 
end 

In meinem Controller params [: id] geführt wird, entweder "Monat"/"Woche"/"heute", um Index-Methode zu halten.

class TimeController < ApplicationController 
    def index 
    @entry = TimeService::INTERVAL_TIME.find { 
           |item| item[:id] == params[:time_id] } 
    end 
end 

Dann verwende ich den Eintrag [: von] aus meiner Sicht. Alles funktioniert gut in der Entwicklung, aber in der Produktion ist der Wert für "heute" normalerweise ein paar Tage zurück. Ich denke, es könnte etwas Caching passieren, aber ich konnte nur Leute finden, die Probleme mit Scopes haben, die zwischengespeichert werden. Wer weiß, wie das gelöst werden kann?

Antwort

1

In Ihrer aktuellen Implementierung haben die :from Schlüssel die Werte, die zu dem Zeitpunkt berechnet wurden, zu dem Ihre Klasse einmal geladen wurde.

Im Entwicklungsmodus werden die Klassen neu geladen, deshalb sehen Sie dort nicht die "zwischengespeicherten" Werte.

Die :from Schlüssel in Ihrer Konstante sollten lambdas als Werte haben, um die Werte bei jedem Zugriff zu berechnen (Sie müssen die Art ändern, auf die Sie auf ihre Werte zugreifen, da sie lambdas sind).

Verwandte Themen