metaprogramming/caller_locations_slicing_parens.rb
tests/_examples/metaprogramming/caller_locations_slicing_parens.rb in the metorex repository.
def innermost
all = caller_locations(0)
ranged = caller_locations(2..3)
endless = caller_locations(2..)
limited = caller_locations(1, 2)
puts(all.length >= 3)
puts(all[0].lineno == 2)
puts(ranged.map(&:lineno) == all[2..3].map(&:lineno))
puts(endless.map(&:lineno) == all[2..-1].map(&:lineno))
puts(limited.length == 2)
puts(caller_locations(100).inspect)
puts(caller_locations(all.length).inspect)
puts(all[0].class)
puts(all[0].path == __FILE__)
puts(all[0].absolute_path == File.expand_path(__FILE__))
end
def middle
innermost
end
def outermost
middle
end
outermost
puts(Kernel.private_instance_methods.include?(:caller_locations))
Output:
true
true
true
true
true
nil
[]
Thread::Backtrace::Location
true
true
true