From: "mame (Yusuke Endoh)" Date: 2012-04-13T22:58:50+09:00 Subject: [ruby-core:44338] [ruby-trunk - Feature #6287][Assigned] nested method should only be visible by nesting/enclosing method Issue #6287 has been updated by mame (Yusuke Endoh). Description updated Status changed from Open to Assigned Assignee set to matz (Yukihiro Matsumoto) Target version changed from 2.0.0 to 3.0 Hello, There is a similar proposal #4085 based on more general idea. Below is my personal opinion. Ruby's def statement is not a static definition, but a dynamic execution that defines a method in the context. This design allows you to define a method that is defined in some condition: if windows? def foo end end , singleton methods for each element in an array: ary.each do |elem| def elem.foo end end , and so on. In the same manner, a "nested" method definition you said: def define_foo def foo end end should define a method named "define_foo" that defines a method named "foo." I think it is consistent. -- Yusuke Endoh def test1 def test2 p "i am test2" end test2 end > test1 "i am test2" # ok > test2 "i am test2" # not ok (imho), this should fail; ie test2 should only be visible by test1, not by outside. -- http://bugs.ruby-lang.org/