Module: Cabin::Inspectable

Included in:
Metric
Defined in:
lib/cabin/inspectable.rb

Instance Method Summary collapse

Instance Method Details

#inspectObject

Provide a saner inspect method that’s easier to configure.

By default, will inspect all instance variables. You can tune this by setting @inspectables to an array of ivar symbols, like:

[ :@hello, :@world ]

class Foo
  include Cabin::Inspectable

  def initialize
    @inspectables = [:@foo, :@bar]
    @foo = 123
    @bar = "hello"
    @baz = "ok"
  end
end

foo = Foo.new
foo.inspect == '<Foo(1) @foo=123 @bar="hello" >'


24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/cabin/inspectable.rb', line 24

def inspect
  if instance_variable_defined?(:@inspectables)
    ivars = @inspectables
  else
    ivars = instance_variables
  end
  str = "<#{self.class.name}(@#{self.object_id}) "
  ivars.each do |ivar|
    str << "#{ivar}=#{instance_variable_get(ivar).inspect} "
  end
  str << ">"
  return str
end