Class: EM::Synchrony::ActiveRecord::ConnectionPool
- Inherits:
-
ConnectionPool
- Object
- ConnectionPool
- EM::Synchrony::ActiveRecord::ConnectionPool
- Defined in:
- lib/em-synchrony/activerecord.rb
Instance Method Summary collapse
- #acquire(fiber) ⇒ Object
-
#affected_rows(*args, &blk) ⇒ Object
via method_missing affected_rows will be recognized as async method.
- #connection ⇒ Object
-
#execute(async) ⇒ Object
consider connection acquired.
Instance Method Details
#acquire(fiber) ⇒ Object
135 136 137 138 |
# File 'lib/em-synchrony/activerecord.rb', line 135 def acquire(fiber) return @reserved[fiber.object_id] if @reserved[fiber.object_id] super end |
#affected_rows(*args, &blk) ⇒ Object
via method_missing affected_rows will be recognized as async method
145 146 147 148 149 |
# File 'lib/em-synchrony/activerecord.rb', line 145 def affected_rows(*args, &blk) execute(false) do |conn| conn.send(:affected_rows, *args, &blk) end end |
#connection ⇒ Object
140 141 142 |
# File 'lib/em-synchrony/activerecord.rb', line 140 def connection acquire(Fiber.current) end |
#execute(async) ⇒ Object
consider connection acquired
123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/em-synchrony/activerecord.rb', line 123 def execute(async) f = Fiber.current begin conn = acquire(f) conn.acquired_for_connection_pool += 1 yield conn ensure conn.acquired_for_connection_pool -= 1 release(f) if !async && conn.acquired_for_connection_pool == 0 end end |