Module: QueryOwl::EagerLoadTracker
- Defined in:
- lib/query_owl/eager_load_tracker.rb
Class Method Summary collapse
- .record_access(model_name, association_name) ⇒ Object
- .record_preload(model_name, association_name) ⇒ Object
- .start! ⇒ Object
- .stop! ⇒ Object
- .tracking? ⇒ Boolean
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
16 17 18 |
# File 'lib/query_owl/eager_load_tracker.rb', line 16 def tracking? !Thread.current[:query_owl_preloaded].nil? end |