README.md in connection_pool-0.9.2 vs README.md in connection_pool-0.9.3

- old
+ new

@@ -9,38 +9,60 @@ Install ------------ gem install connection_pool + +Notes +------------ + +- Connections are eager created when the pool is created. +- There is no provision for repairing or checking the health of a + connection; connections should be self-repairing. This is +true of the dalli and redis clients. + + Usage ------------ Create a pool of objects to share amongst the fibers or threads in your Ruby application: - @memcached = ConnectionPool.new(:size => 5, :timeout => 5) { Dalli::Client.new } +``` ruby +@memcached = ConnectionPool.new(:size => 5, :timeout => 5) { Dalli::Client.new } +``` Then use the pool in your application: - @memcached.with_connection do |dalli| - dalli.get('some-count') - end +``` ruby +@memcached.with do |dalli| + dalli.get('some-count') +end +``` +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` 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: - $redis = ConnectionPool::Wrapper.new(:size => 5, :timeout => 3) { Redis.connect } - $redis.sadd('foo', 1) - $redis.smembers('foo') +``` ruby +$redis = ConnectionPool::Wrapper.new(:size => 5, :timeout => 3) { Redis.connect } +$redis.sadd('foo', 1) +$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. - $redis.with_connection do |conn| - conn.sadd('foo', 1) - conn.smembers('foo') - end +``` ruby +$redis.with do |conn| + conn.sadd('foo', 1) + conn.smembers('foo') +end +``` Once you've ported your entire system to use `with`, you can simply remove ::Wrapper and use a simple, fast ConnectionPool. Author