2011-12-18 16 views
7

誰かがサイトにアクセスするたびにRailsアプリのイニシャライザが実行されますか?イニシャライザはどのくらいの頻度でRailsで動作しますか?

たとえば、私のサーバーがテキサスで午前10時に開始され、誰かがニューヨークから午後1時に自分のサイトにアクセスするとします。誰かがロサンゼルスの午後10時に訪問します。ニューヨークとロサンゼルスの人々が訪れたときにレールアプリケーションでイニシャライザを実行するのですか?あるいは、イニシャライザはテキサス州でサーバを起動した後にのみ起動しますか?

私が尋ねる理由は、アプリケーションが訪問された時刻に応じてメール設定を変更するためにイニシャライザファイルでcase式を使用していたためです。これは、誰かがサイトにアクセスしたときにイニシャライザが実行された場合にのみ意味をなさないでしょう。サーバーが起動されたときにのみ実行された場合は、1つのケースのみになります。

これは適切な場所ではない場合や、イニシャライザが一度動作する場合は、このコードをどこに置くのですか?

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 

答えて

13

を見て、実行時にこれらの設定を設定するには:一度だけ、あなたのサーバが起動蹴るとき。

この記事では、あなたがintrestedの可能性がありますThe Rails Initialization Process

関連する問題