def foo puts "in foo" s = yield puts "s = #{s}" return 2 ensure puts "in ensure" return 1 end def bar foo do puts "in bar block" return 3 end return 4 end [36] pry(main)> r = bar in foo in bar block in ensure => 4
I would expect r = 3, but it turns out that it is r = 4. If I delete the security code, r = 3 is expected. Why?
def foo puts "in foo" s = yield puts "s = #{s}" return 2 end r = bar in foo in bar block => 3
source share