From d51139751eae2be6ee32b44edec39fcf09ed2333 Mon Sep 17 00:00:00 2001 From: Nick Kallen Date: Fri, 18 Apr 2008 12:59:29 -0700 Subject: officially renamed active_relation to arel --- lib/arel/sessions/session.rb | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 lib/arel/sessions/session.rb (limited to 'lib/arel/sessions') diff --git a/lib/arel/sessions/session.rb b/lib/arel/sessions/session.rb new file mode 100644 index 0000000000..becf23b8b6 --- /dev/null +++ b/lib/arel/sessions/session.rb @@ -0,0 +1,56 @@ +require 'singleton' + +module Arel + class Session + class << self + attr_accessor :instance + alias_method :manufacture, :new + + def start + if @started + yield + else + begin + @started = true + @instance = manufacture + metaclass.send :alias_method, :new, :instance + yield + ensure + metaclass.send :alias_method, :new, :manufacture + @started = false + end + end + end + end + + module CRUD + def create(insert) + insert.call(insert.engine.connection) + end + + def read(select) + @read ||= Hash.new do |hash, select| + hash[select] = select.call(select.engine.connection) + end + @read[select] + end + + def update(update) + update.call(update.engine.connection) + end + + def delete(delete) + delete.call(delete.engine.connection) + end + end + include CRUD + + module Transactions + end + include Transactions + + module UnitOfWork + end + include UnitOfWork + end +end \ No newline at end of file -- cgit v1.2.3