此源代码中声明的范围变量在哪里?

时间:2018-11-07 14:20:13

标签: ruby ruby-on-rails-3 devise

我一直在研究源代码以进行设计,因为我一生无法弄清楚下面的代码块是如何工作的(full source here)

def mapping
    @mapping ||= begin
        mapping = Devise.mappings[scope]
        raise "Could not find mapping for #{scope}" unless mapping
        mapping
    end
end

我认为可以理解这段代码的大部分内容,但是无法找到范围变量的声明/定义位置。我搜索了存储库(及其继承的存储库),并查看了可用于尝试更好地了解此处发生情况的测试,但在任何地方都找不到任何提到scope变量的情况。我仍在学习红宝石,所以我是否错过了一些我在工作中不知道的明显/语言构造?

1 个答案:

答案 0 :(得分:1)

这是warden的东西。检查一下

https://github.com/wardencommunity/warden/blob/master/lib/warden/strategies/base.rb

此行

class Base < ::Warden::Strategies::Base

应该给您一个提示:)