Ruby Method Lookup Flow

P

Phrogz

I sat down to diagram Ruby's object model in something better than
ascii, and ended up getting confused on how to label 'objects' or
'spaces' where methods lived. So instead, I diagrammed[1] the flow of
how method lookup works. I was surprised by a few findings, so I think
it was a nice exercise.

For your enjoyment and criticism, I give you:
http://phrogz.net/RubyLibs/RubyMethodLookupFlow.png

Gimme a holler if anything about it is wrong (inconceivable).

[1] Because people inevitably end up asking: it was diagrammed with
OmniGraffle, the prettiest and best damned diagramming software I've
ever used, available only for MacOS X.
 
M

Mauricio Fernandez

I sat down to diagram Ruby's object model in something better than
ascii, and ended up getting confused on how to label 'objects' or
'spaces' where methods lived. So instead, I diagrammed[1] the flow of
how method lookup works. I was surprised by a few findings, so I think
it was a nice exercise.

For your enjoyment and criticism, I give you:
http://phrogz.net/RubyLibs/RubyMethodLookupFlow.png

Gimme a holler if anything about it is wrong (inconceivable).

The unimaginable happens.

"All method lookups include, and finish at, the Object metaclass."

Object includes Kernel...
Also, s/metaclass//.

Maybe you could insert another module between Square and Rect, as in

class A; def foo; "A#foo" end end
class B < A; end
module C; def foo; "C#foo" end end
b = B.new
b.foo # => "A#foo"
class B; include C end
b.foo # => "C#foo"

in order to show that modules can shadow instance methods defined in classes
and that there's no special rule to make them float right below Object or
anything like that.
 
P

Phrogz

Not to bump my own thread, but I've updated the diagram again - was
able to compress a lot of vertical space for the main diagram, and add
some informative notes calling out interesting/important aspects.

It's not (just) that I crave attention that I post this, but I really
want to make sure that there's nothing wrong or misleading with the
diagram. Having an incorrect diagram (*cough* ilias *cough*) on the web
would be far worse than having no diagram at all.
 

Members online

No members online now.

Forum statistics

Threads
474,333
Messages
2,571,754
Members
48,554
Latest member
CarrollCro

Latest Threads

Top