# File lib/thread_resource_pool.rb, line 97 97: def use_resource 98: resource = self.current_resource 99: unless resource.nil? 100: return yield(resource) 101: end 102: begin 103: begin 104: resource = self.current_resource = get_new_resource 105: return yield(resource) 106: ensure 107: self.current_resource = nil 108: end 109: ensure 110: # if thread is terminated by force here, 'current_resource' has already been set to nil 111: self.current_resource = nil 112: put_resource_back(resource) unless resource.nil? 113: end 114: end