lib/goldiloader.rb
# frozen_string_literal: true
require 'active_support/all'
require 'goldiloader/compatibility'
require 'goldiloader/custom_preloads'
require 'goldiloader/auto_include_context'
require 'goldiloader/scope_info'
require 'goldiloader/association_options'
require 'goldiloader/association_loader'
ActiveSupport.on_load(:active_record) do
# Defer referencing ActiveRecord class until it's loaded
# See https://github.com/rails/rails/issues/48704
require 'goldiloader/active_record_patches'
end
module Goldiloader
class << self
# Sets the process-wide enabled status
attr_accessor :globally_enabled
def enabled?
Thread.current.fetch(:goldiloader_enabled, globally_enabled)
end
def enabled=(val)
Thread.current[:goldiloader_enabled] = val
end
def enabled
old_enabled = Thread.current[:goldiloader_enabled]
self.enabled = true
yield
ensure
self.enabled = old_enabled
end
def disabled
old_enabled = Thread.current[:goldiloader_enabled]
self.enabled = false
yield
ensure
self.enabled = old_enabled
end
end
self.globally_enabled = true
end