初始化程序在Rails中运行的频率如何?

时间:2011-12-18 19:21:54

标签: ruby-on-rails initializer

每次有人访问网站时,是否会在Rails应用中运行初始值设定项?

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

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

如果这不是正确的地方,或者如果初始化程序仅在德克萨斯州启动服务器时运行(例如),那么您将在何处放置此代码?

    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

2 个答案:

答案 0 :(得分:13)

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

您可能对本文The Rails Initialization Process

感兴趣

答案 1 :(得分:6)

无论何时启动乘客/杂种或其他任何用途,初始化程序都会加载。

要在运行时设置这些设置,请查看Rails: Runtime configuration of ActionMailer?