diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/arel/algebra/relations/relation.rb | 2 | ||||
-rw-r--r-- | lib/arel/session.rb | 32 |
2 files changed, 9 insertions, 25 deletions
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 |