# File lib/sshkit/backends/connection_pool.rb, line 60 def with(connection_factory, *args) cache = find_cache(args) conn = cache.pop || begin connection_factory.call(*args) end yield(conn) ensure cache.push(conn) unless conn.nil? # Sometimes the args mutate as a result of opening a connection. In this # case we need to update the cache key to match the new args. update_key_if_args_changed(cache, args) end