beauty of metaprogramming
DESCRIPTION
Basic introduction to ruby metaprogramming. Big thanks to Dave Thomas for his tutorials on metaprogrammingTRANSCRIPT
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