tags:

views:

65

answers:

2

Is there any built in way to require that a block be passed to a Ruby method? I realize I can just raise an exception if block_given? is false, but is there some nicer way to do it?

+5  A: 

Simply by using yield.

If you include yield in a method, and a block is not given, it throws an error.

Put this in a file and run it:

def needs_block
    yield
end

needs_block

It will throw an error like this:

LocalJumpError: no block given
    from (irb):14:in `needs_block'
    from (irb):16
Doug Neiner
Well that was way too easy :) Thanks!
Kyle Slattery
A: 

raise 'need block' unless block_given?

rogerdpack