Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprogramação em ruby
Upcoming SlideShare
Loading in...5
×
 

Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprogramação em ruby

on

  • 2,001 views

Palestra apresentada durante o evento Ruby + Rails no Mundo Real 2010.

Palestra apresentada durante o evento Ruby + Rails no Mundo Real 2010.
Entendendo, de verdade, como funciona metaprogramação em ruby e desmistificando o que normalmente chamam de magia negra.

Statistics

Views

Total Views
2,001
Views on SlideShare
1,370
Embed Views
631

Actions

Likes
0
Downloads
7
Comments
0

9 Embeds 631

http://www.davidpaniz.com 319
http://templariodatecnologia.wordpress.com 277
http://feeds.feedburner.com 13
http://gurusp.org 9
http://www.slideshare.net 5
http://webcache.googleusercontent.com 3
http://www.gurusp.org 2
https://templariodatecnologia.wordpress.com 2
http://www.lmodules.com 1
More...

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprogramação em ruby Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprogramação em ruby Presentation Transcript

  • Voodoo é pra jacu! metaprogramação em ruby Leonardo Bessa David Paniz leobessa@gmail.com davidpaniz@gmail.com @leobessa @davidpaniz www.davidpaniz.com
  • O que é metaprogramação? Metaprogramação é a programação de programas que escrevem ou manipulam outros programas (ou a si próprios) assim como seus dados
  • O que é metaprogramação? Metaprogramming is writing code that writes code Metaprogramming is writing code that manipulates language constructs at runtime View slide
  • Qual a tarifa agora? View slide
  • class Calculator def calculate(time) if (7...21).include?(time.hour) 1 else 0.5 end end end p Time.now.tarifa 5
  • class Time def tarifa if (7...21).include?(hour) 1 else 0.5 end end end p Time.now.tarifa 6
  • "I invented the term Object- Oriented, and I can tell you I did not have C++ in mind." - Alan Kay
  • class
  • class
  • Codando...
  • woody.class == amigo.class
  • Criação de métodos • Eu realmente posso adicionar um método a um único objeto? • Onde o método está? • Que tipo de objeto pode definir um método?
  • Singleton Class • Também conhecidas como Metaclass, Eigenclass, etc • É uma classe como outra qualquer, mas escondida • Existe uma para cada objeto (lazy)
  • Qual é a Singleton Class class << self self end
  • Qual é a Singleton Class class Object def singleton_class class << self self end end end
  • Codando...
  • Como logar a chamada de um método?
  • alias :new_name :old_name
  • Que tal só ‘log :voar’?
  • Abrindo a classe...
  • E se eu quiser logar mais de método?
  • Generalização