A tiny Ruby gem to aid you when you wish to pass multiple blocks to any ruby method.
Passing multiple blocks to a method
def accepts_multiple_blocks(is_awesome, &block) if is_awesome block.yield_to(:awesome, "this is awesome!") do puts "You may pass blocks to the blocks, too!" end else block.yield_to(:not_awesome, "bad, this is bad") end end accepts_multiple_blocks(:awesome) do |is| is.awesome do |&block| puts "Very awesome!" block.call end is.not_awesome do puts "Not so awesome" end end accepts_multiple_blocks(:not_awesome) do |event| if event.not_awesome? puts ":(" else puts "\\o/!" end end
If you wish to enforce that at least one of the blocks are executed,
you may use
block.yield\_to! (with a bang) instead, which will raise
an exception if no block was executed.
2-clause (simplified) BSD license. See LICENSE for details.