From cc542bd6dbffa2e51ecced83ffc2727309075354 Mon Sep 17 00:00:00 2001 From: Yuji Hanamura Date: Thu, 3 Feb 2022 23:40:40 +0900 Subject: [PATCH] Avoid eager loading `ActiveRecord::Base` --- arproxy.gemspec | 1 + lib/arproxy.rb | 13 +++++++++++-- lib/arproxy/config.rb | 1 - 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/arproxy.gemspec b/arproxy.gemspec index cee2d26..405bef9 100644 --- a/arproxy.gemspec +++ b/arproxy.gemspec @@ -14,6 +14,7 @@ Gem::Specification.new do |spec| spec.require_paths = ["lib"] spec.add_dependency 'activerecord', '>= 4.2.0' + spec.add_dependency 'activesupport', '>= 4.2.0' spec.add_development_dependency "bundler" spec.add_development_dependency "rake", ">= 12.3.3" diff --git a/lib/arproxy.rb b/lib/arproxy.rb index 3992263..3f5421d 100644 --- a/lib/arproxy.rb +++ b/lib/arproxy.rb @@ -4,6 +4,8 @@ require "arproxy/proxy_chain" require "arproxy/error" require "arproxy/plugin" +require "active_record" +require "active_support" module Arproxy @config = @enabled = nil @@ -28,8 +30,15 @@ def enable! raise Arproxy::Error, "Arproxy should be configured" end - @proxy_chain = ProxyChain.new @config - @proxy_chain.enable! + if ActiveRecord.autoload? :Base + ActiveSupport.on_load(:active_record, yield: true) do + @proxy_chain = ProxyChain.new @config + @proxy_chain.enable! + end + else + @proxy_chain = ProxyChain.new @config + @proxy_chain.enable! + end @enabled = true end diff --git a/lib/arproxy/config.rb b/lib/arproxy/config.rb index 379dc7e..e793a88 100644 --- a/lib/arproxy/config.rb +++ b/lib/arproxy/config.rb @@ -1,5 +1,4 @@ require "active_record" -require "active_record/base" module Arproxy class Config