2011-04-14 18 views
5

Necesito registrar la hora a la que se realiza una solicitud. ¿Cómo puedo obtener esa información de un objeto de solicitud en Rieles 3?¿Cómo obtener la hora a la que se realiza una solicitud desde el objeto de solicitud en los raíles 3?

+0

¿Cuál es su intención? Si el tiempo actual no funciona y los microsegundos son importantes, este es un caso de uso muy peculiar para el cual la intención exacta tiene implicaciones significativas sobre lo que usa. – coreyward

Respuesta

10

Necesita crear su middleware Rack, que agregará una marca de tiempo para solicitarla. Por ejemplo (no lo he comprobado, pero te da la idea):


module Middleware 
    class Timestamp 
    def initialize(app) 
     @app = app 
    end 

    def call(env) 
     env[:timestamp] = Time.now 
     @app.call(env) 
    end 
    end 
end 
 

y agregarlo en application.rb (config.middleware.use)

+0

Gracias. Esto me dio una idea de cómo hacerlo. Pero es suficiente si solo configuro una marca de tiempo en un controlador en mi aplicación. – Sathish

1

El request.env no parece incluir una marca de tiempo:

<% for item in request.env %> 
    <%= item %><br /> 
<% end %> 

Y no veo nada relacionado aquí: http://api.rubyonrails.org/classes/ActionDispatch/Request.html

¿Es suficiente para que su solicitud acaba de establecer una marca de tiempo en su controlador en un before_filter?

+0

Gracias por la aclaración. Pero, ¿configurar y obtener la marca de tiempo del controlador de la única manera? Debería haber alguna forma de saber cuándo se crea el objeto de solicitud, ¿verdad? – Sathish

+0

La respuesta honesta es que no lo sé. Me interesó tu pregunta y, por lo tanto, verifiqué request.env y los documentos de la API y no encontré nada. –

Cuestiones relacionadas