覆盖方法 Ruby

Override method Ruby

我想覆盖方法:authorize_endpoint_url 来自 Rails 应用程序中的 Gem:https://github.com/AzureAD/omniauth-azure-activedirectory/blob/master/lib/omniauth/strategies/azure_activedirectory.rb

我试图通过向 config/initializers/oauth.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

但这种方法似乎不起作用,实际上什么都没有被覆盖。我做错了什么?谢谢

编写 "monkey patch" 样式更改时,您需要确保正确加载它们。测试这一点的一种方法是,在说完一切之后,询问 Ruby 以找出实际使用的是哪种方法:

OmniAuth::Strategies::AzureActiveDirectory.instance_method(:‌​request_phase).sourc‌​e_location

instance_method 调用 returns 一个对象,其中包含有关该方法的信息,source_location 属性 告诉您该对象的定义位置。

如果这是你的方法,太好了,你加载正确了。如果不是,您可能需要检查是否在正确的时间挂机。