代码之家  ›  专栏  ›  技术社区  ›  John Smith

重写方法Ruby

  •  1
  • John Smith  · 技术社区  · 7 年前

    我想重写该方法: 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
    

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   tadman    7 年前

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

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

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

    如果这是你的方法,太好了,你加载对了。如果没有,你可能需要检查你是否在正确的时间上钩。