2016-05-31 42 views
0

当我将RoR(4.2.6)应用程序部署到ElasticBeanstalk时,看起来初始化过程正在运行四次。这影响了我依赖作业调度程序对象的单例实例的方式(使用Rufus Scheduler)。Elastic Beanstalk和Rails - 多次初始化?

在一对夫妇的初始化文件,并在application.rb,我增加了一些日志语句:

这里:

# /config/initializers/scheduler.rb 
require 'rufus-scheduler' 

::Rufus_lockfile = "/tmp/.rufus-scheduler.lock" 

::Scheduler = Rufus::Scheduler.singleton(
    :lockfile => Rufus_lockfile 
) 

Rails.logger.info "1: started Scheduler #{Scheduler.object_id}" 

在这里:

# /config/initializers/cookies_serializer.rb 

Rails.logger.info "2: some other initializer" 

在这里:

# /config/application.rb 

require File.expand_path('../boot', __FILE__) 
require 'rails/all' 

Bundler.require(*Rails.groups) 

module MyApp 
    class Application < Rails::Application 

    ... 

    config.after_initialize do 
     Rails.logger.info "3: after app is initialized" 
    end 

    end 
end 

我跑eb deploy,它完成后,这是我看到的app/log/production.log顶部:

I, [2016-05-31T10:31:08.756302 #18753] INFO -- : 2: some other initializer 
I, [2016-05-31T10:31:08.757252 #18753] INFO -- : 1: started Scheduler 47235057343600 
I, [2016-05-31T10:31:08.896353 #18753] INFO -- : 3: after app is initialized 
I, [2016-05-31T10:31:23.669517 #18817] INFO -- : 2: some other initializer 
I, [2016-05-31T10:31:23.670380 #18817] INFO -- : 1: started Scheduler 46989489069800 
I, [2016-05-31T10:31:23.806154 #18817] INFO -- : 3: after app is initialized 
D, [2016-05-31T10:31:23.969103 #18817] DEBUG -- : ^[[1m^[[36mActiveRecord::SchemaMigration Load (1.3ms)^[[0m ^[[1mSELECT "schema_migrations".* FROM "schema_migrations"^[[0m 
I, [2016-05-31T10:31:33.108449 #18897] INFO -- : 2: some other initializer 
I, [2016-05-31T10:31:33.109513 #18897] INFO -- : 1: started Scheduler 47156425207060 
I, [2016-05-31T10:31:33.116500 #18901] INFO -- : 2: some other initializer 
I, [2016-05-31T10:31:33.117374 #18901] INFO -- : 1: started Scheduler 47156425216940 
I, [2016-05-31T10:31:33.790266 #18901] INFO -- : 3: after app is initialized 
I, [2016-05-31T10:31:33.844517 #18897] INFO -- : 3: after app is initialized 

所以它看起来像初始化文件,甚至代码在我after_initializer块越来越运行四次...我无法弄清楚为什么。

回答