¿Cómo salir de un bloque de rubí?

Aquí 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

Y aqui estaFoo#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

Pensé en usar raise, pero estoy tratando de hacerlo genérico, así que no quiero poner nada específico enFoo.

Respuestas a la pregunta(7)

Su respuesta a la pregunta