module Inspector

puts User.new.inspect

> #<User:0x10c7a2f80 id: 1, email: “tyler@example.com”, company_id: 1>

Public Class Methods

included(source) click to toggle source
# File lib/bario/inspector.rb, line 27
def self.included(source)
  # $stdout.puts "Overriding inspect on #{source}"
  inspected << source
  source.class_eval do
    def self.inspector(*fields)
      @inspector_fields = *fields
    end

    def self.inspector_fields
      @inspector_fields ||= []
    end
  end
end
inspected() click to toggle source
# File lib/bario/inspector.rb, line 23
def self.inspected
  @inspected ||= []
end
inspector(*fields) click to toggle source
# File lib/bario/inspector.rb, line 31
def self.inspector(*fields)
  @inspector_fields = *fields
end
inspector_fields() click to toggle source
# File lib/bario/inspector.rb, line 35
def self.inspector_fields
  @inspector_fields ||= []
end

Public Instance Methods

inspect() click to toggle source
# File lib/bario/inspector.rb, line 15
def inspect
  string = "#<#{self.class.name}:#{object_id} "
  fields = self.class.inspector_fields.map do |field|
    "#{field}: #{send(field)}"
  end
  "#{string}#{fields.join(', ')}>"
end