summaryrefslogtreecommitdiff
path: root/lib/orm/unit_of_work.rb
blob: 468a04e170f6cb7926d7b6fe318e315c6ee0f861 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class UnitOfWork
  def initialize(session, context, key)
    @session = session
    @context = context
    @key = key
  end
  def run(&block)
    @session.run(&block)
  end
  def dispose
    @context.remove(@key)
    @session.dispose
  end
  def self.create(factory, &block)
    unit_of_work = factory.create
    begin
      unit_of_work.run(&block)
    ensure
      unit_of_work.dispose
    end
  end
end