【问题标题】:Unicorn loading initializers独角兽加载初始化器
【发布时间】:2012-10-17 12:14:51
【问题描述】:

我正在从 Thin 迁移到 Unicorn。除了加载特定的 Gem 包外,我在大多数网站上都取得了成功。我不认为是包本身,而是 Unicorn 与 Initializer 文件的交互方式。

这是我当前的unicorn.rb 设置。由于我使用的是 Mongoid,所以我没有使用 before_fork 或 after_fork。

worker_processes 3
timeout 30
preload_app true

初始化文件在/config/initializers/asin.rb

ASIN::Configuration.configure do |config|
  config.secret        = ENV['AMAZON_SECRET']
  config.key           = ENV['AMAZON_KEY']
  config.associate_tag = ENV['AMAZON_TAG']
  config.version       = ENV['AMAZON_VERSION']
end

Rails 会自动加载初始化文件中的信息吗?

【问题讨论】:

    标签: ruby-on-rails-3 unicorn


    【解决方案1】:

    如果你打算使用preload_app true 并且你有在加载时打开的套接字,你可能会遇到麻烦,除非你花时间写before_forkafter_fork独角兽钩。

    Unicorn docs on preload_app 对此进行了更详细的讨论。

    [预加载] 在使用写时复制友好的 GC 时可以节省内存,但当主进程在加载时打开诸如套接字之类的资源并由多个子进程共享时,可能会导致坏事发生。

    一般来说,我建议保留preload_app false,直到您确定一切正常。当您准备好优化部署时,您可以考虑采取必要的步骤来预加载应用程序。

    【讨论】:

      【解决方案2】:

      是的。只要你把它放在config/initializers,它就会被加载。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 2015-07-28
        相关资源
        最近更新 更多