每次有人访问网站时,Rails应用程序中的初始化程序是否都会运行?
例如,如果我的服务器是在上午10点在德克萨斯州启动的,那么有人会在下午1点从纽约访问我的网站.有人在晚上10点从洛杉矶来访,在纽约和洛杉矶的人们访问时,在轨道应用程序中运行初始化程序,或者只在我在德克萨斯州启动服务器时才运行初始化程序吗?
我问的原因是因为我在初始化文件中使用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",:tls => true } end
解决方法
无论何时启动乘客/杂种或任何使用的东西,初始化器都会加载.
要在运行时设置这些设置,请查看Rails: Runtime configuration of ActionMailer?