Domanda

How can I detect that an active resource find() call returned HTTP 206 instead of a typical HTTP 200?

I know ActiveResource throws various exceptions for HTTP 3xx-5xx response codes, but how can you figure out what 200-level response code you received?

È stato utile?

Soluzione

See Active Resource responses, how to get them for how to get the last response for the thread. You can then test the response code as needed:

class MyConn < ActiveResource::Connection
  def handle_response(resp)
    # Store in thread (thanks fivell for the tip).
    # Use a symbol to avoid generating multiple string instances.
    Thread.current[:active_resource_connection_last_response] = resp
    super
  end
  # this is only a convenience method. You can access this directly from the current thread.
  def last_resp
    Thread.current[:active_resource_connection_last_response]
  end
end

class MyResource < ActiveResource::Base
  class << self
    attr_writer :connection
  end
end

myconn = MyConn.new MyResource.connection.site
MyResource.connection = myconn  # replace with our enhanced version
object = MyResource.find(id)
response_code = MyResource.last_resp.code
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top