module Arx::Inspector

Restricts inspect to dump a whitelist of methods on an object. It will always provide `object_id` at a minimum.

@private

Public Class Methods

included(source) click to toggle source

Defines helper inspector_fields instance variable & method, and inspector instance method on the target object.

@param [Object] source An arbitrary object (the object that includes the Inspector module).

# File lib/arx/inspector.rb, line 30
def included(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

Returns the inspected instance variable, or sets it if undefined.

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

Public Instance Methods

inspect() click to toggle source

Overwrites the object's own inspect method.

# File lib/arx/inspector.rb, line 10
def inspect
  pairs = {}

  self.class.inspector_fields.each do |field|
    pairs[field] = self.send(field).inspect
  rescue
  end

  "#<#{self.class.name}:#{self.object_id} #{pairs.map {|k,v| "#{k}=#{v}"}.join(", ")}>"
end