module JitPreloader::ActiveRecordRelation

Public Instance Methods

calculate(*args) click to toggle source
Calls superclass method
# File lib/jit_preloader/active_record/relation.rb, line 17
def calculate(*args)
  if respond_to?(:proxy_association) && proxy_association.owner && proxy_association.owner.jit_n_plus_one_tracking
    ActiveSupport::Notifications.publish("n_plus_one_query",
                                         source: proxy_association.owner,
                                         association: "#{proxy_association.reflection.name}.#{args.first}")
  end

  super(*args)
end
exec_queries() click to toggle source
Calls superclass method
# File lib/jit_preloader/active_record/relation.rb, line 27
def exec_queries
  super.tap do |records|
    if limit_value != 1
      records.each{ |record| record.jit_n_plus_one_tracking = true }
      if jit_preload? || JitPreloader.globally_enabled?
        JitPreloader::Preloader.attach(records)
      end
    end
  end
end
jit_preload(*args) click to toggle source
# File lib/jit_preloader/active_record/relation.rb, line 4
def jit_preload(*args)
  spawn.jit_preload!(*args)
end
jit_preload!(*args) click to toggle source
# File lib/jit_preloader/active_record/relation.rb, line 8
def jit_preload!(*args)
  @jit_preload = true
  self
end
jit_preload?() click to toggle source
# File lib/jit_preloader/active_record/relation.rb, line 13
def jit_preload?
  @jit_preload
end