2011-12-18 11 views
7

¿Se ejecutan los inicializadores en una aplicación de Rails cada vez que alguien visita el sitio?¿Con qué frecuencia se ejecutan los inicializadores en Rails?

Por ejemplo, si mi servidor se inicia en Texas a las 10 a.m., y alguien visita mi sitio desde Nueva York a la 1 p.m. y alguien visita desde Los Angeles a las 10 p.m, hace los inicializadores en una aplicación de rieles cuando la gente de Nueva York y Los Ángeles lo visita, o los inicializadores solo se ejecutan una vez que inicio el servidor en Texas.

La razón por la que estoy preguntando es porque estaba usando una expresión de caso en un archivo de inicializador para cambiar la configuración del correo electrónico dependiendo de la hora del día en que se visitó la aplicación. Esto solo tendría sentido si los inicializadores se ejecutaran cuando alguien visitara el sitio. Si solo se ejecutan cuando se inició el servidor, solo sería un caso ...

Si ese no es el lugar correcto para hacerlo, o si los inicializadores solo se ejecutan una vez que se inicia el servidor en Texas (por ejemplo) entonces, ¿dónde pondrías este código?

case 

    when Time.now.hour == 0 


    ActionMailer::Base.smtp_settings = { 
     :user_name => "[email protected]", 
     :password => "blahblah", 
     :address => "smtp.examplel.com", 
     :port => 25, 
     :tls => true 
    } 

    when Time.now.hour == 1 

    ActionMailer::Base.smtp_settings = { 
     :user_name => "[email protected]", 
     :password => "eatshit", 
     :address => "smtp.example.com", 
     :port => 25, 
     :tls => true 
    } 

end 

Respuesta

13

Una respuesta muy simple y directo es: Sólo una vez, cuando el servidor se empiece a levantar.

Puede interesarse en este artículo The Rails Initialization Process

Cuestiones relacionadas