mirror of
https://github.com/mperham/connection_pool
synced 2023-03-27 23:22:21 -04:00
Deprecate #with_connection
in favor of #with
.
This commit is contained in:
parent
42614fa8a3
commit
ae182c844c
3 changed files with 18 additions and 10 deletions
10
README.md
10
README.md
|
@ -33,14 +33,14 @@ Create a pool of objects to share amongst the fibers or threads in your Ruby app
|
|||
Then use the pool in your application:
|
||||
|
||||
``` ruby
|
||||
@memcached.with_connection do |dalli|
|
||||
@memcached.with do |dalli|
|
||||
dalli.get('some-count')
|
||||
end
|
||||
```
|
||||
|
||||
If all the objects in the connection pool are in use, `with_connection` will block
|
||||
If all the objects in the connection pool are in use, `with` will block
|
||||
until one becomes available. If no object is available within `:timeout` seconds,
|
||||
`with_connection` will raise a `Timeout::Error`.
|
||||
`with` will raise a `Timeout::Error`.
|
||||
|
||||
You can use `ConnectionPool::Wrapper` to wrap a single global connection, making
|
||||
it easier to port your connection code over time:
|
||||
|
@ -54,10 +54,10 @@ $redis.smembers('foo')
|
|||
The Wrapper uses `method_missing` to checkout a connection, run the
|
||||
requested method and then immediately check the connection back into the
|
||||
pool. It's **not** high-performance so you'll want to port your
|
||||
performance sensitive code to use `with_connection` as soon as possible.
|
||||
performance sensitive code to use `with` as soon as possible.
|
||||
|
||||
``` ruby
|
||||
$redis.with_connection do |conn|
|
||||
$redis.with do |conn|
|
||||
conn.sadd('foo', 1)
|
||||
conn.smembers('foo')
|
||||
end
|
||||
|
|
|
@ -51,7 +51,11 @@ class ConnectionPool
|
|||
checkin
|
||||
end
|
||||
end
|
||||
alias :with_connection :with
|
||||
|
||||
def with_connection(&block)
|
||||
warn("ConnectionPool#with_connection is deprecated and will be removed in version 1.0. Upgrade your code to use ConnectionPool#with instead. (in #{caller[0]})")
|
||||
with(&block)
|
||||
end
|
||||
|
||||
def checkout
|
||||
stack = ::Thread.current[@key] ||= []
|
||||
|
@ -76,7 +80,7 @@ class ConnectionPool
|
|||
end
|
||||
|
||||
class Wrapper < ::BasicObject
|
||||
METHODS = [:with, :with_connection]
|
||||
METHODS = [:with]
|
||||
|
||||
def initialize(options = {}, &block)
|
||||
@pool = ::ConnectionPool.new(options, &block)
|
||||
|
@ -87,7 +91,11 @@ class ConnectionPool
|
|||
ensure
|
||||
@pool.checkin
|
||||
end
|
||||
alias :with_connection :with
|
||||
|
||||
def with_connection(&block)
|
||||
warn("ConnectionPool::Wrapper#with_connection is deprecated and will be removed in version 1.0. Upgrade your code to use ConnectionPool::Wrapper#with instead. (in #{caller[0]})")
|
||||
with(&block)
|
||||
end
|
||||
|
||||
def respond_to?(id, *args)
|
||||
METHODS.include?(id) || @pool.with { |c| c.respond_to?(id, *args) }
|
||||
|
|
|
@ -34,7 +34,7 @@ class TestConnectionPool < MiniTest::Unit::TestCase
|
|||
threads = []
|
||||
15.times do
|
||||
threads << Thread.new do
|
||||
pool.with_connection do |net|
|
||||
pool.with do |net|
|
||||
net.do_something
|
||||
end
|
||||
end
|
||||
|
@ -84,7 +84,7 @@ class TestConnectionPool < MiniTest::Unit::TestCase
|
|||
|
||||
def test_return_value
|
||||
pool = ConnectionPool.new(:timeout => 0.1, :size => 1) { NetworkConnection.new }
|
||||
result = pool.with_connection do |net|
|
||||
result = pool.with do |net|
|
||||
net.fast
|
||||
end
|
||||
assert_equal 1, result
|
||||
|
|
Loading…
Reference in a new issue