Ruby Metaprogramming

Anuncio
Ruby
Meta-programming
Matias P. Brutti
self.Introducción
Matías Pablo Brutti AKA FreedomCoder o FC
LUGParana / Ruby-ar...
Consultor de Seguridad
Ruby Developer como hobby
http://www.freedomcoder.com.ar
Ruby Metaprogramming y RubyCocoa
# man ruby
Interpretive
Variables have no type (dynamic typing)
No declaration needed
Simple syntax
No user-level memory management
Everything is an object
Class, inheritance, and methods
Singleton methods
Closures
Mix-in by modules
Text processing and regular expression
Iterators
Bignums
Exception handling
Direct access to the OS
Dynamic loading
ruby basics
Que es Meta-programming ?
“La metaprogramación consiste en escribir programas
que escriben o manipulan otros programas (o a sí
mismos) como datos, o que hacen en tiempo de
compilación parte del trabajo que, de otra forma, se
haría en tiempo de ejecución. Esto permite al
programador ahorrar tiempo en la producción de código.”
Wikipedia
DATA
CODE
Data = Code
?
?
attr_* :foobar
Monkey Patching
eval(code)
instance_eval
Evalúa una cadena de texto o un bloque en el contexto
del objeto receptor.
class_eval && module_eval
Es un método que acepta un ‘string’ o un bloque y
se evalúa en el contexto de una clase o un modulo.
--Si usamos variables declaradas fuera del contexto debemos usar ‘string’--
Class_eval example
define_method
Define un método de instancia en el receptor.
Los parámetros que aceptan son un bloque o un ‘proc’.
define_method :example
method_missing
Toma como parámetros el nombre del método y los
parámetros con que se llamaron. Declarando este
método en nuestra clase o modulo nos permite
hookear y realizar operaciones en el objeto.
Ejemplos ...
Ruby on Rails,
Rubycocoa,
ActiveRecord,
Ruby,
merb,
camping
etc, etc, etc...
Ejemplos ...
Ruby on Rails,
Rubycocoa,
ActiveRecord,
Ruby,
merb,
camping
etc, etc, etc...
Libros
The Ruby Way
Ruby CookBook
Design patterns in Ruby
Programming Ruby
The productive Programmer
Gracias !!!
Descargar