Method: Kernel#temporarily

Defined in:
lib/core/facets/kernel/temporarily.rb

#temporarily(settings) ⇒ Object

Temporarily set variables while yielding a block, then return the variables to their original settings when complete.

temporarily('$VERBOSE'=>false) do
  $VERBOSE.assert == false
end


10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/core/facets/kernel/temporarily.rb', line 10

def temporarily(settings) #:yield:
  cache = {}
  settings.each do |var, val|
    cache[var] = eval("#{var}")
    eval("proc{ |v| #{var} = v }").call(val)
  end
  yield
ensure
  cache.each do |var, val|
    eval("proc{ |v| #{var} = v }").call(val)
  end
end