Ruby + Rails no Mundo Real 2010 – Eu fui

Assim como no post do Rails Summit 2009 eu ia começar o post com uma resenha do evento, mas acho que os posts do Marcelo Castellani e do Rodrigo Ribeiro já atacaram todos os pontos e não tenho mais nada a acrescentar a não ser os meus parabéns e meus agradecimentos a todos os envolvidos.
Fotos do evento podem ser vistas no album do GURU-SP

Sobre a minha palestra com o Leonardo Bessa, infelizmente demos uma atrasadinha na primeira metade da palestra e não conseguimos falar de tudo o que queríamos, mas pelo feedback que tivemos acredito que os presentes gostaram e aprenderam. O que não deu tempo de falar no dia com certeza vai virar post aqui no futuro. Para os que não puderam ir, felizmente o pessoal da organização gravou o evento e o vídeo da nossa apresentação pode ser visto aqui:

Para aqueles que foram ou apenas viram o vídeo, aqui estão os slides da palestra:

E aqui o código gerado durante a apresentação:

class Picapau
  def voa
    "voando..."
  end
  def anda
    "andando..."
  end
end


woody = Picapau.new
amigo = Picapau.new
# 
# woody.voa
# amigo.voa
# woody.anda
# amigo.anda
# 
# def woody.hehehe
#   p "hehehe-hehehe-hehehehehe"
#   
# end
# 
# woody.hehehe
# 
# # amigo.hehehe
# 
# 
# p woody.class
# p amigo.class

# p woody.class == amigo.class

class Object
    def singleton_class
      # p self
      class << self
        # p self
      self
      end
    end
end

# p woody.singleton_class
# p amigo.singleton_class
# p amigo.singleton_class == woody.singleton_class
# 

# class Picapau
#   alias :metodo_voa :voa
#   def voa(param='')
#     result = metodo_voa(param)
#     p "Chamando metodo voa com #{param.inspect} retornou #{result.inspect}"
#     result
#   end
# end

# 
# class Picapau
#   def self.log(metodo) 
#     metodo_velho = self.instance_method(metodo) 
#     define_method(metodo) do |*arg|
#       result =  metodo_velho.bind(self).call(arg)
#       p "Chamando metodo voa com #{arg.inspect} retornou #{result.inspect}"
#     end
#   end
#   log :voa
# end


# 
# class Picapau
#   def self.log(*metodos)
#     metodos.each do |metodo| 
#       metodo_velho = self.instance_method(metodo) 
#       define_method(metodo) do |*arg|
#         result =  metodo_velho.bind(self).call(arg)
#         p "Chamando metodo voa com #{arg.inspect} retornou #{result.inspect}"
#       end
#     end
#   end
#   log :voa, :anda
# end


module Logger
  
  def log(*nome_do_metodos)
     nome_do_metodos.each do |nome_do_metodo|
       metodo_velho = self.instance_method(nome_do_metodo)

       define_method(nome_do_metodo) do 
         result = metodo_velho.bind(self).call
         p "Chamando metodo #{nome_do_metodo} e retornou #{result}"
         result
       end
     end
   end
end

module Andador
  def anda2
    p "novo metodo que anda"
  end
end
  
class Picapau
  extend Logger
  include Andador
  log :voa, :anda
end

woody.voa
woody.anda
woody2 = Picapau.new
woody2.anda2
Posted in Palestras / Apresentações, Rails, Ruby

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>