Elastic Beanstalk和Rails - 初始化多次?

时间:2016-05-31 16:24:40

标签: ruby ruby-on-rails-4 elastic-beanstalk

当我将我的RoR(4.2.6)应用程序部署到ElasticBeanstalk时,初始化过程似乎已经运行了四次。这会影响我依赖作业Scheduler对象的单例实例的方式(使用Rufus Scheduler)。

在几个初始化文件和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块中的代码都运行了四次......我无法弄清楚原因。

1 个答案:

答案 0 :(得分:0)

在rufus-scheduler问题系统上询问了问题,在那里回答:https://github.com/jmettraux/rufus-scheduler/issues/208