From 703571f7e0bebb3d2bd43a7af5976ad4565ac2cb Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 20 Jul 2010 15:00:36 -0700 Subject: use Session.instance rather than Session.new for easier code --- lib/arel/algebra/relations/relation.rb | 2 +- lib/arel/session.rb | 32 ++++++++------------------------ 2 files changed, 9 insertions(+), 25 deletions(-) (limited to 'lib') diff --git a/lib/arel/algebra/relations/relation.rb b/lib/arel/algebra/relations/relation.rb index 0332482066..34181beea2 100644 --- a/lib/arel/algebra/relations/relation.rb +++ b/lib/arel/algebra/relations/relation.rb @@ -3,7 +3,7 @@ module Arel attr_reader :count def session - Session.new + Session.instance end def call diff --git a/lib/arel/session.rb b/lib/arel/session.rb index e6da825b97..622ca090f8 100644 --- a/lib/arel/session.rb +++ b/lib/arel/session.rb @@ -1,30 +1,14 @@ module Arel class Session - class << self - attr_accessor :instance - alias_method :manufacture, :new + def self.instance + @instance || new + end - def start - if defined?(@started) && @started - yield - else - begin - @started = true - @instance = manufacture - singleton_class.class_eval do - undef :new - alias_method :new, :instance - end - yield - ensure - singleton_class.class_eval do - undef :new - alias_method :new, :manufacture - end - @started = false - end - end - end + def self.start + @instance ||= new + yield @instance + ensure + @instance = nil end module CRUD -- cgit v1.2.3