ruby-on-rails - 如何在不同的上下文中传递变量
问题描述
代码如下:
http_adapter = ::GraphQL::Client::HTTP.new(schema_url) do
def headers(context)
{
'Authorization': "Bearer #{}",
'Content-Type': 'application/json'
}
end
end
我需要的是从http_adapter
级别上下文传递一个变量到内部Bearer #{}
。此外,由于令牌每隔几个小时过期一次,因此我无法传递常量或环境变量。那么如何正确传递令牌?谢谢。
顺便说一下,上面的代码是实例方法的一部分。
解决方案
可以Module#define_method
用来保留范围:
http_adapter = ::GraphQL::Client::HTTP.new(schema_url) do
define_method :headers do |context|
{
'Authorization': "Bearer #{}", # outer context is available here
'Content-Type': 'application/json'
}
end
end
或者,可以在以下位置使用专用实例变量::GraphQL::Client::HTTP
:
::GraphQL::Client::HTTP.instance_variable_set(:@bearer, ...)
http_adapter = ::GraphQL::Client::HTTP.new(schema_url) do
def headers(context)
{
'Authorization': "Bearer #{self.class.instance_variable_get(:@bearer)}",
'Content-Type': 'application/json'
}
end
end
或者,也可以自己执行初始化:
http_adapter = ::GraphQL::Client::HTTP.new(schema_url)
http_adapter.class.send(:attr_writer, :bearer)
http_adapter.bearer = ...
http_adapter.extend(Module.new do
def headers(context)
{
'Authorization': "Bearer #{@bearer}",
'Content-Type': 'application/json'
}
end
end)
推荐阅读
- ruby-on-rails - 如何在 Rails 应用程序中拥有预设数据
- wordpress - GDPR iubenda cookie 政策横幅同意未保存且横幅未关闭
- android - 在 iOS/Android/Facebook/Twitter 政策中,是否可以在没有用户单击登录按钮的情况下自动登录用户?
- c - C 中类似 GLSL 的向量访问
- excel - 根据恒定的年度数据填充小时数据
- django - 当会话过期时,执行任何操作都会被 Django 重定向登录页面
- javascript - Uncaught SyntaxError: missing ) 在我的代码中的参数列表之后
- python - python - 如何将大小为 n 的列表转换为大小为 n/2 xn/2 的二维 numpy 数组
- javascript - Google Sheets API v4 分享
- javascript - 谷歌地图在javascript中放大和缩小两次