覆盖方法 Ruby



我想覆盖方法:在 Rails 应用程序中从 Gem authorize_endpoint_url: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

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

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

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

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

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

最新更新