我正在从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会自动加载初始化文件中的信息吗?
答案 0 :(得分:3)
如果您要使用preload_app true
和,您的套接字在加载时打开,除非您花时间写{{1},否则您可能会遇到麻烦}和before_fork
独角兽钩子。
Unicorn docs on preload_app更详细地讨论了这一点。
[预加载]允许在使用写时复制友好的GC时节省内存,但是当主进程在加载时打开并由多个子进程共享套接字等资源时,可能会导致不良事件发生。< / em>的
一般情况下,我建议保留after_fork
,直到您确定一切正常。当您准备好优化部署时,您可以考虑采取必要的步骤来预加载应用程序。
答案 1 :(得分:0)
是的。只要你把它放在config/initializers
中,它就会被加载。