Issue #7019 has been updated by drbrain (Eric Hodel). I don't know why you would expect this to work, private, public, etc. are methods on Module and your context is not a subclass of Module. Why should we pollute every object with a new methods privately, publicly and protectedly (which isn't a word)? ---------------------------------------- Feature #7019: allow `private` and `protected` keywords to take blocks https://bugs.ruby-lang.org/issues/7019#change-29479 Author: alexeymuranov (Alexey Muranov) Status: Open Priority: Normal Assignee: Category: Target version: =begin I like to indent my private methods one level deeper, but this indentation is inconsistent with the syntax: class C def f # end private def g # end end I think it would be nice if the (({private})) keyword could take a block, then i would write: class C def f # end private do def g # end end end =end -- http://bugs.ruby-lang.org/