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