gpt4 book ai didi

ruby-on-rails - Ruby:在运行时定位类定义?

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:30 26 4
gpt4 key购买 nike

我现在可能对 rails 感到奇怪...某处正在定义一个类,但我找不到它。 Grepping“class ClassName”未能找到它,但当我加载 Rails 控制台时它肯定在那里。它只是一个从 Object 继承的 Vanilla 类,没有定义任何其他东西……很无聊。所以,我想要的是找出此类常量最初从 Rails 控制台定义的位置的方法。换句话说,在声明此类时打印出“__ FILE __”的值。我觉得某种类型的元编程应该可以实现这一点。

我只是想做

ClassName.class_exec { __FILE__ }

但这总是给我当前文件。

最佳答案

钩子(Hook)方法inherited,如果定义了,就会在创建子类时被调用。因此:

#!/usr/bin/ruby1.8

class Object
def self.inherited(child)
target_class = "Child"
raise "#{target_class} defined" if child.name == target_class
end
end

class Parent
end

class Child < Parent # => /tmp/foo.rb:6:in `inherited': Child defined (RuntimeError)
# => from /tmp/foo.rb:13

end

关于ruby-on-rails - Ruby:在运行时定位类定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2618184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com