class Praxis::Mapper::ConnectionManager
Attributes
repositories[RW]
Public Class Methods
new()
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 45 def initialize @connections = {} @thread = Thread.current end
repository(repository_name, **data, &block)
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 15 def self.repository(repository_name, **data, &block) return repositories[repository_name] if data.empty? && !block_given? query = data[:query] || Praxis::Mapper::Query::Sql factory_class = data[:factory] || ConnectionFactories::Simple opts = data[:opts] || {} if query.kind_of? String query = query.constantize end if factory_class.kind_of? String factory_class = factory_class.constantize end repositories[repository_name] = { query: query, factory: factory_class.new(**opts, &block) } end
setup(&block)
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 9 def self.setup(&block) if block_given? self.instance_eval(&block) end end
Public Instance Methods
checkout(name)
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 55 def checkout(name) connection = @connections[name] return connection if connection factory = repositories[name][:factory] connection = factory.checkout(self) @connections[name] = connection end
release(name=nil)
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 71 def release(name=nil) if name release_one(name) else names = @connections.keys names.each { |n| release_one(n) } end end
release_one(name)
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 65 def release_one(name) if (connection = @connections.delete(name)) repositories[name][:factory].release(self, connection) end end
repositories()
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 37 def repositories self.class.repositories end
repository(repository_name)
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 41 def repository(repository_name) self.repositories[repository_name] end
thread()
click to toggle source
# File lib/praxis-mapper/connection_manager.rb, line 50 def thread return @thread if @thread == Thread.current raise 'threading violation in ConnectionManager. Calling Thread is different from Thread that owns this instance.' end