Gavri Fernandez wrote:
> Hi everyone,
> 
>>From the pickaxe first edition:
>   "At the top level, we're executing code in the context of some
> predefined object. When we define methods, we're actually creating
> (private) singleton methods for this object."
> 
> Is this true? It is true that methods defined at the top-level are
> defined as singleton methods of "main" - the top level object? I
> thought that the methods added at the top-level are defined as private
> methods of Object. (Where I learnt this from, I'm not sure).
> Experimenting gave me the latter result.
> 
> 
>>def whoa
>> puts "in whoa"
>>end
>>puts Object.new.private_methods.find {|x| x == "whoa"}
> 
> 
> prints "whoa\n" to the screen.
> 
> So is the pickaxe wrong? Or am I missing something big?

It seems to be defined in both:

p self         # => main
p self.class   # => Object
def foo
   p 'foo'
end
p self.private_methods(false)         # => ["initialize", "foo", "Rational"]
p Object.new.private_methods(false)   # => ["initialize", "foo", "Rational"]
__END__

Hmmm, I need to play around with this some more.

Ryan