如何从'define_method'调用'super'?

时间:2016-09-02 20:07:32

标签: ruby-on-rails ruby metaprogramming remote-debugging test-environments

我正在尝试将binding.remote_pry添加到我的应用程序的所有类中的所有方法中,以用于测试环境。

我试试这个:

classes = []
ObjectSpace.each_object { |o| classes << o if o.class == Class }
classes.each do |classe|
    classe.methods.each do |method_name|
        classe.class_eval do
            define_method(method_name.to_sym) do
                @@bindings ||= []
                @@bindings << Thread.new {binding.remote_pry}
                super
            end
        end
    end
end

但我不知道如何在super内调用每个方法的define_method 我想在这里做一些太疯狂的事吗? 还有另外一种方法吗?提前致谢

1 个答案:

答案 0 :(得分:-1)

您应该使用显式空参数列表调用它,否则super会尝试从原始方法传递参数,这不适用于define_method定义的方法。只是做:

super()

你应该没事;)