beauty of metaprogramming

Post on 06-Dec-2014

1.103 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Basic introduction to ruby metaprogramming. Big thanks to Dave Thomas for his tutorials on metaprogramming

TRANSCRIPT

Beauty of Metaprogrammingin Ruby

S. M. Ashif Manjur@Nascenia

Topics I will touch…

•What is Metaprogramming?• Ruby Object Model• Sharing functionalities• instance_eval and class_eval•Magic of method_missing

WHAT IS METAPROGRAMMING?

“Writing code that writes code”

METHOD LOOKUP CHAIN

CLASSES

• Classes are always open• Class definitions are live• Classes are objects• Every method call has a receiver• Anonymous or ghost classes

OPEN CLASSES

CONSOLE OUTPUT:  $$$ CAR

AS UNCLE BEN SAYS…

“with great power comes great responsibility”

MONKEY PATCHING

CONSOLE OUTPUT:  $$$ CAR

DEFINITIONS ARE LIVE

CLASSES ARE OBJECTS

SELF AS A RECEIVER

SINGLETON METHODS

GHOST CLASSES

CLASS METHODS ARE SAME

SHARING FUNCTIONALITY

• Prototype• Inheritance•Mixin

PROTOTYPE

INHERITANCE

MIXIN

AFTER MIX(ED) IN…

EVALS ARE EVIL

instance_eval

class_eval

METHOD MISSING

Q&A

THANK YOU

top related