Httparty-仅针对当前实例动态设置base_uri

时间:2019-03-02 13:04:09

标签: ruby httparty

我有以下代码,可为所有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),但仅针对调用它的当前实例?

谢谢 斯科特

1 个答案:

答案 0 :(得分:1)

您将使用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