2016-05-31 4 views
0

Wenn ich meine RoR (4.2.6) -Anwendung für ElasticBeanstalk bereitstelle, scheint der Initialisierungsprozess viermal ausgeführt zu werden. Dies hat Auswirkungen auf die Art und Weise, wie ich auf eine Singleton-Instanz eines Job-Scheduler-Objekts angewiesen bin (unter Verwendung von Rufus Scheduler).Elastische Bohnenstange und Rails - mehrfach initialisiert?

In ein paar initializer Dateien und in application.rb, fügte ich einige Protokollanweisungen:

hier:

# /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}" 

Und hier:

# /config/initializers/cookies_serializer.rb 

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

Und hier:

# /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 

Nachdem ich eb deploy laufen und es abgeschlossen ist, ist das, was ich an der Spitze app/log/production.log sehen:

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 

So sieht es aus wie die Initialisierer-Dateien und sogar den Code in meinem after_initializer Block werden immer vier Mal läuft ... und ich kann nicht herausfinden warum.

Antwort