【发布时间】:2017-01-11 00:27:03
【问题描述】:
我正在尝试将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
但是我不知道如何调用define_method里面每个方法的super
我想在这里做一些太疯狂的事情吗?
还有另一种方法吗?提前致谢
【问题讨论】:
-
绝对是一些疯狂的事情。再次致电
super有什么问题? -
仅供参考:
classes = ObjectSpace.each_object.select { |o| o.class == Class } -
RuntimeError: 不支持从由 define_method() 定义的方法传递 super 的隐式参数。明确指定所有参数。
-
@Cassiano 查看链接的副本。它概述了实现这一目标的许多方法。
-
非常感谢。下次我会努力搜索的。
标签: ruby-on-rails ruby metaprogramming remote-debugging test-environments