我想在Rails应用程序中覆盖Gem中的方法:config/initializers/oauth.rb
:https://github.com/AzureAD/omniauth-azure-activedirectory/blob/master/lib/omniauth/strategies/azure_activedirectory.rb
我尝试将文件添加到module OmniAuth
module Strategies
# A strategy for authentication against Azure Active Directory.
class AzureActiveDirectory
def request_phase
debugger
"www.hans.com"
end
end
end
end
使用代码:
[Chunk (parent)]
====> [Chunk (depends on existence of parent for this to load)]
但是这种方法似乎不起作用,实际上没有任何东西被覆盖。我错了什么?谢谢
答案 0 :(得分:2)
在编写“猴子补丁”样式更改时,您需要确保正确加载它们。测试这个的一种方法是,在完成所有工作之后,询问Ruby以找出实际使用的方法:
OmniAuth::Strategies::AzureActiveDirectory.instance_method(:request_phase).source_location
instance_method
调用返回一个对象,其中包含有关该方法的信息,source_location
属性会告诉您定义的位置。
如果你的方法是好的,那么你就把它装好了。如果不是,您可能需要检查您是否在正确的时间挂钩。