Module: Kernel

Defined in:
lib/sixarm_ruby_ramp/kernel.rb

Overview

Kernel extensions

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.pp_s(*objs) ⇒ String

Pretty print to a string.

Created by Graeme Mathieson.

See rha7dotcom.blogspot.com/2008/07/ruby-and-rails-how-to-get-pp-pretty.html

Examples:

pp_s(["foo","goo"])
=> "[\"foo\", \"goo\"]\n"

Returns:

  • (String)

    a pretty print string of the params



79
80
81
82
83
84
85
86
# File 'lib/sixarm_ruby_ramp/kernel.rb', line 79

def pp_s(*objs)  
  str = StringIO.new  
  objs.each {|obj|  
      PP.pp(obj, str)  
    }  
    str.rewind  
    str.read  
end

Instance Method Details

#caller_method_name(caller_index = 0) ⇒ String

See:

- Make this fast because its often doing logging & reporting. Inline this and use $1 because it’s empirically faster than /1

These two methods must always be equal:

caller_method_name(0) === my_method_name

Examples:

def foo
  puts caller_method_name(0)
  puts caller_method_name(1)
end
=> 
"foo"
"irb_binding"

Returns:

  • (String)

    the method name of the caller at the index



60
61
62
63
64
# File 'lib/sixarm_ruby_ramp/kernel.rb', line 60

def caller_method_name(caller_index=0)
  RUBY_VERSION > '2.0' \
  ? caller_locations(caller_index + 1,1).first.base_label \
  : caller[caller_index][/`([^']*)'/, 1]
end

#my_method_nameString

See:

See stackoverflow.com/questions/5100299/how-to-get-the-name-of-the-calling-method

Make this fast because its often doing logging & reporting. Inline this and use $1 because it’s empirically faster than /1

These two methods must always be equal:

caller_method_name(0) === my_method_name

Examples:

def foo
  puts my_method_name
end
foo
=> "foo"

Returns:



31
32
33
34
35
# File 'lib/sixarm_ruby_ramp/kernel.rb', line 31

def my_method_name
  RUBY_VERSION > '2.0' \
  ? caller_locations(1,1).first.base_label \
  : caller[0][/`([^']*)'/, 1]
end