ruby - 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 这样的默认选项,但仅适用于正在调用它的当前实例?
谢谢斯科特
解决方案
你会用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
推荐阅读
- angular - ExpressionChangedAfterItHasBeenCheckedError:称为 Api 的角度更改数据
- mysql - 有条件地在 SELECT 语句中包含一列 - MYSQL
- python - python导入模块 - 我错过了什么?
- django - 在 django 中获取外键 id 时出错
- mysql - 为什么子查询中的 OR 会使查询慢得多?
- sql - 使用 Python 连接到 Jupyter Notebook 中的 SQL 数据库
- javascript - 在用户滚动到它们之前触发所有 `content-visibility: auto` 元素的渲染,而不会阻塞主线程超过 50 毫秒
- python - 如何只保留字符串中的某些字符
- sql-server - SQL Server 中的类型转换问题
- python - GCP 没有名为“tensorflow”的模块