每次有人访问站点时,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的运行时配置?