# innertube **Repository Path**: mirrors_basho/innertube ## Basic Information - **Project Name**: innertube - **Description**: A thread-safe re-entrant resource pool for Ruby, extracted from the Riak Ruby Client. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-08 - **Last Updated**: 2026-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Innertube Innertube is a thread-safe, re-entrant resource pool, extracted from the [Riak Ruby Client](https://github.com/basho/riak-ruby-client), where it was used to pool connections to [Riak](https://github.com/basho/riak). It is free to use and modify, licensed under the Apache 2.0 License. ## Example ```ruby # ------------------------------------------------------- # Basics # ------------------------------------------------------- # Create a pool with open/close callables pool = Innertube::Pool.new(proc { Connection.new }, proc {|c| c.disconnect }) # Optionally, fill the pool with existing resources pool.fill([conn1, conn2, conn3]) # Grab a connection from the pool, returns the same value # as the block pool.take {|conn| conn.ping } # => true # Raise the BadResource exception if the resource is no # longer good pool.take do |conn| raise Innertube::Pool::BadResource unless conn.connected? conn.ping end # Innertube helps your code be re-entrant! Take more resources # while you have one checked out. pool.take do |conn| conn.stream_tweets do |tweet| pool.take {|conn2| conn2.increment :tweets } end end # ------------------------------------------------------- # Iterations: These are slow because they have guarantees # about visiting all current elements of the pool. # ------------------------------------------------------- # Do something with every connection in the pool pool.each {|conn| puts conn.get_stats } # Expunge some expired connections from the pool pool.delete_if {|conn| conn.idle_time > 5 } ``` ## Credits The pool was originally implemented by [Kyle Kingsbury](https://github.com/aphyr) and extracted by [Sean Cribbs](https://github.com/seancribbs), when bugged about it by [Pat Allan](https://github.com/pat) at [EuRuKo 2012](http://www.euruko2012.org/).