module Trailblazer::Developer::Trace::Inspector

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).

Public Instance Methods

activerecord_relation_inspector(value) click to toggle source

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

# File lib/trailblazer/developer/trace/inspector.rb, line 33
def activerecord_relation_inspector(value)
  { query: value.to_sql }
end
array_inspector(value, default_inspector:) click to toggle source
# 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), **) click to toggle source
# 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) click to toggle source
# 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:) click to toggle source
# 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