Module: Trailblazer::Developer::Trace::Inspector

Defined in:
lib/trailblazer/developer/trace/inspector.rb

Overview

This module does the inspection of given ‘ctx` with deep traversal. It only gets called when focusing is going on (i.e. focus_on API).

Class Method Summary collapse

Class Method Details

.activerecord_relation_inspector(value) ⇒ Object

To avoid additional query that AR::Relation#inspect makes, we’re calling AR::Relation#to_sql to get plain SQL string instead.



33
34
35
# File 'lib/trailblazer/developer/trace/inspector.rb', line 33

def activerecord_relation_inspector(value)
  { query: value.to_sql }
end

.array_inspector(value, default_inspector:) ⇒ Object



25
26
27
28
29
# File 'lib/trailblazer/developer/trace/inspector.rb', line 25

def array_inspector(value, default_inspector:)
  value.collect do |nested_value|
    call(nested_value, default_inspector: default_inspector)
  end
end

.call(value, default_inspector: method(:default_inspector)) ⇒ Object



10
11
12
13
14
15
# File 'lib/trailblazer/developer/trace/inspector.rb', line 10

def call(value, default_inspector: method(:default_inspector), **)
  return hash_inspector(value, default_inspector: default_inspector) if value.is_a?(Hash)
  return array_inspector(value, default_inspector: default_inspector) if value.is_a?(Array)

  default_inspector.(value)
end

.default_inspector(value) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/trailblazer/developer/trace/inspector.rb', line 37

def default_inspector(value)
  if defined?(ActiveRecord) && value.is_a?(ActiveRecord::Relation)
    return activerecord_relation_inspector(value)
  end

  value.inspect
end

.hash_inspector(value, default_inspector:) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/trailblazer/developer/trace/inspector.rb', line 17

def hash_inspector(value, default_inspector:)
  Hash[
    value.collect do |key, nested_value|
      [key, call(nested_value, default_inspector: default_inspector)]
    end
  ]
end