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

  • 1,968 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
1,968
Slideshare-icon Views on SlideShare
1,344
Embed Views
624

Actions

Likes
0
Downloads
7
Comments
0

9 Embeds 624

http://www.davidpaniz.com 315
http://templariodatecnologia.wordpress.com 274
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
    • Qual a tarifa agora?
    • 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