Resque 2.0.0 は eager_loadしない
resque 2.0.0でのメインとなる変更は後方互換絶ちと思っていたら、
Only run eager_load! if Rails.application.config.eager_load is true
という変更があり、実際に取り込んでみると意図しない影響を受けました。
rakeタスクでRailsアプリケーションをロードすると、 config.eager_load
を無効にするコールバックを挿入します。これによってrakeタスクの中からはconfig.eager_load
が常にfalseを返すのです。
ちなみに、このコールバックは不要なクラスのロードを避けて実行を速めるという意図があります。
2.0.0で取り込まれた Only run eager_load! if Rails.application.config.eager_load is true
は、 「config.eager_load
を参照して実行時にeager_loadするかを選べる」という変更ですが、実際はrakeタスクでresqueを起動しているとeager_loadしなくなりました。
https://github.com/resque/resque/pull/1597
以前のようにeager_loadして欲しい時は下記rakeタスクの定義を行うとよいでしょう。
Rake::Task["resque:preload"].clear
task 'resque:preload' => :environment do |task|
ActiveSupport.run_load_hooks(:before_eager_load, Rails.application)
Rails.application.config.eager_load_namespaces.each(&:eager_load!)
end
-
category:
- ruby tags: