Class: Gimme::EnsuresClassMethodRestoration

Inherits:
Object
  • Object
show all
Defined in:
lib/gimme/ensures_class_method_restoration.rb

Instance Method Summary collapse

Constructor Details

#initialize(cls) ⇒ EnsuresClassMethodRestoration

Returns a new instance of EnsuresClassMethodRestoration.



3
4
5
# File 'lib/gimme/ensures_class_method_restoration.rb', line 3

def initialize(cls)
  @cls = cls
end

Instance Method Details

#ensure(method) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/gimme/ensures_class_method_restoration.rb', line 7

def ensure(method)
  meta_class = (class << @cls; self; end)
  Gimme.on_reset do
    if real_method = Gimme.class_methods.get(@cls, method)
      meta_class.instance_eval { define_method method, real_method }
    else
      meta_class.send(:remove_method, method)
    end
  end
end