From: Robert Klemme Date: 2008-06-15T22:29:13+09:00 Subject: Re: why can't an instance instantiated within a class method access a protected instance method? On 15.06.2008 15:17, Greg Hauptmann wrote: > Thanks - can I ask: Guess so. > (a) what do you mean by "explicit" - just to understand no_explicit_receiver() self.has_explicit_receiver() > (b) is there a way I can adjust my code so that I can leave methods like > "reconcile_one" private or protected, i.e. not really to be available to the > outside world (except in this case where I'm calling it from with an > instance of the class really, but it's just the logistics of Ruby that isn't > allowing it to work...if I've understood things correctly) You can use #send or #instance_eval, e.g. irb(main):001:0> class F irb(main):002:1> protected irb(main):003:1> def x;1 end irb(main):004:1> end => nil irb(main):005:0> f=F.new => # irb(main):006:0> f.x NoMethodError: protected method `x' called for # from (irb):6 from :0 irb(main):007:0> f.instance_eval { x } => 1 irb(main):008:0> f.send :x => 1 irb(main):009:0> Cheers robert