module RSpec::Core::Hooks

def run_hook!(hook, scope, example, options={})

ensuring that they will only be run once.
Just like run_hook, except it removes the blocks as it evalutes them,
def run_hook!(hook, scope, example, options={})
  until hooks[hook][scope].empty?
    if options[:reverse] 
      example.instance_eval &hooks[hook][scope].shift
    else
      example.instance_eval &hooks[hook][scope].pop
    end
  end
end