def slds_response
      return @slds_response if @slds_response
      http = Net::HTTP.new(item_uri.host, item_uri.port)
      http.use_ssl = true
      http.read_timeout = 2
      http.open_timeout = 2
      @slds_response ||= http.start do |http|
        http.get(item_uri.path)
      end
    end
def slds_response
      return @slds_response if @slds_response
      http = Net::HTTP.new(item_uri.host, item_uri.port)
      http.use_ssl = true
      http.read_timeout = 2
      http.open_timeout = 2
      @slds_response ||= http.start do |http|
        http.get(item_uri.path)
      end
    end
http://opensourceconnections.com/blog/2008/04/24/adding-timeout-to-nethttp-get_response/

 Net::HTTP.get and Net::HTTP.get_response
 The difference between these two methods is that
 get_response is a class method that returns an Net::HTTPResponse object
 while get is an instance method that returns a string.
 And get_response doesn’t support passing in timeouts of any kind!
 By wrapping my call to http.get in an http.start{} block,
 I get the timeout ability of http.get
 with the return of an HTTPResponse that Net::HTTP.get_response normally provides.