class Object

Public Instance Methods

cm_fopen(filename) click to toggle source
# File lib/context_manager.rb, line 24
def cm_fopen(filename)
  f = File.open(filename)
  
  close_file = finish do |file|
    file.close
  end

  [f, close_file]
end
finish(&block) click to toggle source
# File lib/context_manager.rb, line 3
def finish(&block)
  Proc.new { |obj| block.call(obj) }
end
with(*args) { |yield_obj| ... } click to toggle source
# File lib/context_manager.rb, line 7
def with(*args)
  begin
    arg = args[0]
    yield_obj = arg[0]
  rescue
    raise ContextNotFound, 'no context found'
  end

  raise ContextNotFound, 'no context found' if yield_obj.nil?

  begin
    yield yield_obj
  ensure
    arg[1].call(yield_obj)
  end
end