咳といいます。

Object#send, __send__について教えてください。

sendを使うとprivateなメソッドも呼べてしまうのは仕様でしょうか?



$ irb
irb(main):001:0> class Foo
irb(main):002:1>   private
irb(main):003:1>   def bar; puts 'bar'; end
irb(main):004:1> end
nil
irb(main):005:0> Foo.new.bar
NameError: private method `bar' called for #<Foo:0x2ac59184>
        from (irb):5
irb(main):006:0> Foo.new.send(:bar)
bar
nil


また、privateの呼び出しが禁止されるObject#sendのようなものは
ありませんか?