the code in the blog post has an error that you fixed in the gist:
def step(callable = nil, &block)
you're missing the nil default in the blog post so it ArgumentError's when passed only a block