【问题标题】:How often do initializers run in Rails?初始化程序在 Rails 中运行的频率如何?
【发布时间】:2012-01-23 03:50:19
【问题描述】:

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

例如,如果我的服务器于上午 10 点在德克萨斯州启动,并且有人在下午 1 点从纽约访问我的网站。并且有人在晚上 10 点从洛杉矶访问,是否在来自纽约和洛杉矶的人们访问时运行 rails 应用程序中的初始化程序,还是仅在我在德克萨斯州启动服务器后才运行初始化程序?

我问的原因是因为我在初始化文件中使用 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

【问题讨论】:

    标签: ruby-on-rails initializer


    【解决方案1】:

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

    您可能对这篇文章感兴趣The Rails Initialization Process

    【讨论】:

      【解决方案2】:

      每当您启动乘客/杂种或您正在使用的任何东西时,都会加载初始化程序。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-29
        • 2012-03-03
        • 2011-09-20
        • 2012-05-27
        • 2012-02-01
        • 2019-04-28
        相关资源
        最近更新 更多