Home > Palestras / Apresentações, Rails, Ruby > Ruby + Rails no Mundo Real 2010 – Eu fui

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
Categories: Palestras / Apresentações, Rails, Ruby Tags:
  1. No comments yet.
  1. No trackbacks yet.