class Foo
private
def bar
puts 'You called bar'
end
end
> foo = Foo.new
foo.bar # this, of course, throws an error
NoMethodError: private method `bar' called for #
from (irb):129
from :0
> foo.send(:bar)
You called bar
=> nil
m = foo.method(:bar)
=> #
> m.call
You called bar
=> nil
> foo.instance_eval { bar }
You called bar
=> nil
Remember you cannot use eval to call a private method:
> eval('foo.bar')
NoMethodError: private method `bar' called for #
from (irb):140
from (irb):140
from :0

0 comments:
Post a Comment