Ruby on rails 如何重写ommiauth库方法
我是ruby新手,尝试重写omniauth库方法。我想让它支持env.header。那么我如何在我的项目中进行这些更改呢?在Ruby类中,可以简单地覆盖mixin(包含的模块)提供的任何方法: 这意味着策略作者在编写策略类时可以简单地重写任何方法。因此,您可以在策略中简单地覆盖Ruby on rails 如何重写ommiauth库方法,ruby-on-rails,omniauth,Ruby On Rails,Omniauth,我是ruby新手,尝试重写omniauth库方法。我想让它支持env.header。那么我如何在我的项目中进行这些更改呢?在Ruby类中,可以简单地覆盖mixin(包含的模块)提供的任何方法: 这意味着策略作者在编写策略类时可以简单地重写任何方法。因此,您可以在策略中简单地覆盖request\u call方法,这是一个更好的选择,因为大多数策略不需要在会话中存储所有请求头 由于OmniAuth::Strategy是一个模块而不是一个类,因此不能使用super调用原始方法。相反,您可以做的是在类中
request\u call
方法,这是一个更好的选择,因为大多数策略不需要在会话中存储所有请求头
由于OmniAuth::Strategy
是一个模块而不是一个类,因此不能使用super
调用原始方法。相反,您可以做的是在类中重写mixin方法之前对其进行别名:
module OmniAuth
class MyStrategy
include Strategy
class << self
alias :original_request_call :request_call
end
def self.request_call
session['omniauth.headers'] = headers
original_request_call
end
# ...
end
end
module OmniAuth
班级策略
包含策略
欢迎来到stackoverflow,当你在这里创建一个问题时,你应该包括相关的代码或者至少一个简单的例子。如果您只链接到github存储库,您将被否决,您的问题可能会被关闭。谢谢您的回答。这对我来说非常有用。然而,我想知道这是否意味着我需要为我的用例编写自己的策略?我更喜欢在omniauth-facebook中添加此函数。在这种情况下,您可以创建FacebookStrategy的子类,也可以在运行时创建monkeypatch类。后者可能存在严重的维护问题。
module OmniAuth
class MyStrategy
include Strategy
class << self
alias :original_request_call :request_call
end
def self.request_call
session['omniauth.headers'] = headers
original_request_call
end
# ...
end
end