Rails ActiveResource检测HTTP 206响应代码

时间:2012-11-12 17:34:50

标签: ruby-on-rails ruby ruby-on-rails-3 http activeresource

如何检测到活动资源find()调用返回HTTP 206而不是典型的HTTP 200?

我知道ActiveResource会针对HTTP 3xx-5xx响应代码抛出各种异常,但是如何确定您收到的200级响应代码?

1 个答案:

答案 0 :(得分:4)

有关如何获取线程的最后响应,请参阅Active Resource responses, how to get them。然后,您可以根据需要测试响应代码:

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