初始化器在Rails中运行的频率



每次有人访问站点时,Rails应用程序中的初始化器都运行吗?

例如,如果我的服务器在上午10点在德克萨斯州启动,有人在下午1点从纽约访问我的站点,有人在晚上10点从洛杉矶访问我的站点,那么当来自纽约和洛杉矶的人访问时,rails应用程序中的初始化器是否运行,或者初始化器是否只在我在德克萨斯州启动服务器时运行?

我问的原因是因为我在初始化文件中使用case表达式来根据访问应用程序的时间更改电子邮件设置。当然,只有当有人访问站点时才运行初始化式时,这才有意义。如果它们只在服务器启动时运行,那么它将只有一个case…

如果这不是正确的位置,或者如果初始化器只在服务器在德克萨斯州启动时运行(例如),那么您将这些代码放在哪里?

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

一个非常简单而直接的答案是:只有一次,当您的服务器启动时。

您可能对这篇文章感兴趣

初始化器会在你启动passenger/mongrel或任何你正在使用的程序时加载。

要在运行时设置这些设置,请查看Rails: ActionMailer的运行时配置?

最新更新