alias_method y class_methods no se mezclan?

He estado tratando de jugar con un módulo de caché global, pero no puedo entender por qué esto no funciona.

¿Alguien tiene alguna sugerencia?

Este es el error:

NameError: undefined method `get' for module `Cache'
    from (irb):21:in `alias_method'

... generado por este código:

module Cache
  def self.get
    puts "original"
  end
end

module Cache
  def self.get_modified
    puts "New get"
  end
end

def peek_a_boo
  Cache.module_eval do
    # make :get_not_modified
    alias_method :get_not_modified, :get
    alias_method :get, :get_modified
  end

  Cache.get

  Cache.module_eval do
    alias_method :get, :get_not_modified
  end
end

# test first round
peek_a_boo

# test second round
peek_a_boo

Respuestas a la pregunta(1)

Su respuesta a la pregunta