aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/arel/algebra/relations/relation.rb2
-rw-r--r--lib/arel/session.rb32
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