Issue #7882 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to matz (Yukihiro Matsumoto)

I have suggested the same proposal (in Japanese [ruby-dev:31393]).
Matz said in [ruby-dev:31423] that it is not clear (to him) whether:

  loop do
    :
  rescue
    :
  ensure
    :
  end

should behave like:

  begin
    loop do
      :
    end
  rescue
    :
  ensure
    :
  end

or:

  loop do
    begin
      :
    rescue
      :
    ensure
      :
    end
  end

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #7882: Allow rescue/else/ensure in do..end
https://bugs.ruby-lang.org/issues/7882#change-36620

Author: charliesome (Charlie Somerville)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: 2.1.0


=begin
The keywords (({rescue})), (({else})) and (({ensure})) can be used when defining methods like so:

  def foo
    #
  rescue
    #
  else
    #
  ensure
    #
  end

However when using a block delimited by do..end, you must use (({begin}))..(({end})) as well:

  foo do
    begin
      # ...
    rescue
      # ...
      # ...
    end
  end

It would be nice to be able to drop the extra (({begin}))..(({end})) and use (({rescue})), etc. clauses directly:

  foo do
    # ...
  rescue
    # ...
    # ...
  end

I cannot think of any ambiguities this syntax would cause, but please correct me if I am wrong.
=end


-- 
http://bugs.ruby-lang.org/