首页 > 解决方案 > Httparty - 仅为当前实例动态设置 base_uri

问题描述

我有以下代码为所有 http 请求动态设置 base_uri。

class Managementdb
  include HTTParty

  def set_url(username)
    self.class.base_uri = "https://#{username}.example.com"

    # ...
  end
end

但是,我发现这不仅为当前实例设置了 base_uri,还为该类的所有其他未来实例设置了 base_uri。

是否可以在方法内设置像 base_uri 这样的默认选项,但仅适用于正在调用它的当前实例?

谢谢斯科特

标签: rubyhttparty

解决方案


你会用block这个问题。我已经根据您的需要实施了一个。

class Managementdb
  include HTTParty

  def set_url(username)
    self.class.base_uri = "https://#{username}.example.com"

    # ...
  end

  def get_userinfo
    wrapper do
      set_url(username)
      self.class.get('/info')
    end
  end

  def wrapper(&block)
    yield
    self.class.base_uri = nil
  end
end

推荐阅读