7

Rails アプリの初期化子は、誰かがサイトにアクセスするたびに実行されますか?

たとえば、私のサーバーがテキサスで午前 10 時に開始され、だれかがニューヨークから午後 1 時に私のサイトにアクセスし、誰かがロサンゼルスから午後 10 時に私のサイトにアクセスした場合、レール アプリケーションで初期化子を実行すると、ニューヨークの人々がとロサンゼルスを訪れますか、それともテキサスでサーバーを起動したときにのみ初期化子が実行されますか?

私が尋ねている理由は、初期化ファイルでケース式を使用して、アプリがアクセスされる時間帯に応じてメール設定を変更していたためです。これはもちろん、誰かがサイトを訪れたときにイニシャライザが実行された場合にのみ意味があります。サーバーの起動時にのみ実行された場合、それは1つのケースにすぎません...

それが適切な場所ではない場合、またはイニシャライザがサーバーがテキサスで起動された後にのみ実行される場合 (たとえば)、このコードをどこに配置しますか?

case
when Time.now.hour == 0
  ActionMailer::Base.smtp_settings = {
    :user_name => "blahblah@example.com",
    :password => "blahblah",
    :address => "smtp.examplel.com",
    :port => 25,
    :tls => true
  }
when Time.now.hour == 1
  ActionMailer::Base.smtp_settings = {
    :user_name => "blah@example.com",
    :password => "eatshit",
    :address => "smtp.example.com",
    :port => 25,
    :tls => true
  }
end
4

2 に答える 2

13

非常にシンプルで率直な答えは、サーバーが起動したときに一度だけです。

この記事に興味があるかもしれませんRailsの初期化プロセス

于 2011-12-18T19:30:20.963 に答える