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

问题描述 投票:1回答:1

我有以下代码动态设置所有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的默认选项,但仅限于调用它的当前实例?

谢谢斯科特

ruby httparty
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.