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