Como sair de um bloco de rubi?

Aqui estáBar#do_things:

class Bar   
  def do_things
    Foo.some_method(x) do |x|
      y = x.do_something
      return y_is_bad if y.bad? # how do i tell it to stop and return do_things? 
      y.do_something_else
    end
    keep_doing_more_things
  end
end

E aqui estáFoo#some_method:

class Foo
  def self.some_method(targets, &block)
    targets.each do |target|
      begin
        r = yield(target)
      rescue 
        failed << target
      end
    end
  end
end

Eu pensei em usar o raise, mas estou tentando torná-lo genérico, então eu não quero colocar nada específico emFoo.

questionAnswers(7)

yourAnswerToTheQuestion