Module: IS::ModuleReset

Defined in:
lib/is-module-reset/info.rb,
lib/is-module-reset/main.rb

Defined Under Namespace

Modules: Info

Class Method Summary collapse

Class Method Details

.dump(*mods) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/is-module-reset/main.rb', line 11

def dump *mods
  state = {}
  mods.each do |mod|
    dump_module state, mod
  end
  state.deep_dup
end

.isolate(*mods) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/is-module-reset/main.rb', line 32

def isolate *mods
  raise ArgumentError, 'Block is required!' unless block_given?
  state = dump(*mods)
  yield
ensure
  undump state
end

.undump(state) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/is-module-reset/main.rb', line 19

def undump state
  state.each do |mod, mod_state|
    mod.class_variables.each { mod.remove_class_variable it }
    mod_state[:class_vars].each do |var, value|
      mod.class_variable_set var, value
    end
    mod.instance_variables.each { mod.remove_instance_variable it }
    mod_state[:instance_vars].each do |var, value|
      mod.instance_variable_set var, value
    end
  end
end