Class: EventTimeline::ValueInspector

Inherits:
Object
  • Object
show all
Defined in:
lib/event_timeline/value_inspector.rb

Class Method Summary collapse

Class Method Details

.activemodel_model?(value) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
37
38
# File 'lib/event_timeline/value_inspector.rb', line 34

def activemodel_model?(value)
  return false unless defined?(ActiveModel::Model)

  value.class.included_modules.include?(ActiveModel::Model)
end

.activerecord_model?(value) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/event_timeline/value_inspector.rb', line 30

def activerecord_model?(value)
  defined?(ActiveRecord::Base) && value.is_a?(ActiveRecord::Base)
end

.inspect(value) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/event_timeline/value_inspector.rb', line 6

def inspect(value)
  return inspect_string(value) if value.is_a?(String)
  return inspect_collection(value) if value.is_a?(Hash) || value.is_a?(Array)
  return inspect_activerecord(value) if activerecord_model?(value)
  return inspect_activemodel(value) if activemodel_model?(value)
  return value.name if value.is_a?(Class) || value.is_a?(Module)

  inspect_generic(value)
rescue StandardError
  '<inspect failed>'
end

.inspect_activerecord(record) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/event_timeline/value_inspector.rb', line 18

def inspect_activerecord(record)
  if record.persisted?
    id_attr = record.class.primary_key
    id_value = record.send(id_attr) if id_attr
    "#{record.class.name}(#{id_attr}: #{id_value})"
  else
    "#{record.class.name}(new_record)"
  end
rescue StandardError
  "#{record.class.name}(<inspection failed>)"
end