Module: QueryOwl::EagerLoadTracker

Defined in:
lib/query_owl/eager_load_tracker.rb

Class Method Summary collapse

Class Method Details

.record_access(model_name, association_name) ⇒ Object



26
27
28
29
30
# File 'lib/query_owl/eager_load_tracker.rb', line 26

def record_access(model_name, association_name)
  return unless tracking?

  accessed << "#{model_name}##{association_name}"
end

.record_preload(model_name, association_name) ⇒ Object



20
21
22
23
24
# File 'lib/query_owl/eager_load_tracker.rb', line 20

def record_preload(model_name, association_name)
  return unless tracking?

  preloaded << { model: model_name.to_s, association: association_name.to_s }
end

.start!Object



4
5
6
7
# File 'lib/query_owl/eager_load_tracker.rb', line 4

def start!
  Thread.current[:query_owl_preloaded] = []
  Thread.current[:query_owl_el_accessed] = Set.new
end

.stop!Object



9
10
11
12
13
14
# File 'lib/query_owl/eager_load_tracker.rb', line 9

def stop!
  result = { preloaded: preloaded.dup, accessed: accessed.dup }
  Thread.current[:query_owl_preloaded] = nil
  Thread.current[:query_owl_el_accessed] = nil
  result
end

.tracking?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/query_owl/eager_load_tracker.rb', line 16

def tracking?
  !Thread.current[:query_owl_preloaded].nil?
end