methods/yield_in_method_clauses_no_parens.rb
tests/_examples/methods/yield_in_method_clauses_no_parens.rb in the metorex repository.
# A method's own rescue, else and ensure clauses belong to its body, so
# `yield` there hands values to the block the method was called with.
def recovering
raise ArgumentError, "first try"
rescue ArgumentError => error
yield error.message
end
def finishing
:body
ensure
yield :ensure
end
def succeeding
:body
rescue
:never
else
yield :else
end
p recovering { |message| "recovered from #{message}" }
p finishing { |where| puts "ran in #{where}" }
p succeeding { |where| "answered from #{where}" }
Output:
"recovered from first try"
ran in ensure
:body
"answered from else"