Ruby on rails 从ruby方法开始
我使用jruby运行大量ruby脚本,尽管我使用的是纯ruby脚本的一部分 有时很难从输出中了解到底发生了什么或哪里出了问题 我想在我的std中为每种方法提供类似的信息: 输入方法A 方法A之外 现在我肯定可以把这些评论放到每一种方法中去,这感觉非常错误。有没有一种方法可以更详细地运行ruby,以便在我的日志中获得这些信息。希望我能避免使用很多宝石等。。因为这些都在一些托管服务器上,我将不得不花一些时间来获取更多的s/f。希望jruby本身能够提供一些有用的东西Ruby on rails 从ruby方法开始,ruby-on-rails,ruby,debugging,rubygems,Ruby On Rails,Ruby,Debugging,Rubygems,我使用jruby运行大量ruby脚本,尽管我使用的是纯ruby脚本的一部分 有时很难从输出中了解到底发生了什么或哪里出了问题 我想在我的std中为每种方法提供类似的信息: 输入方法A 方法A之外 现在我肯定可以把这些评论放到每一种方法中去,这感觉非常错误。有没有一种方法可以更详细地运行ruby,以便在我的日志中获得这些信息。希望我能避免使用很多宝石等。。因为这些都在一些托管服务器上,我将不得不花一些时间来获取更多的s/f。希望jruby本身能够提供一些有用的东西 谢谢 您可以使用以下代码: mo
谢谢 您可以使用以下代码:
module InOutHook
module ClassMethods
def setup_hooks(*syms)
syms.each do |sym| # For each symbol
str_id = "__#{sym}__hooked__"
unless private_instance_methods.include?(str_id)
alias_method str_id, sym # Backup original method
private str_id # Make backup private
define_method sym do |*args| # Replace method
puts ">>> #{self.class}\##{sym} >>>"
ret = __send__ str_id, *args # Invoke backup
puts "<<< #{self.class}\##{sym} >>>"
ret
end
end
end
end
end
def InOutHook.included(base)
base.extend(ClassMethods)
end
end
class TestClass
def test1
puts "test!"
end
def test2(v)
puts "Value is #{v}"
end
include InOutHook
setup_hooks(:test1, :test2)
end
# works on existing classes too:
class Array
include InOutHook
setup_hooks(:[])
end
tc = TestClass.new
tc.test1
tc.test2(10)
ary = [1,2,3]
puts ary[1..2]
thnx!。是否有一种方法可以获取类中的所有方法,而不是列出它们。我尝试使用setup_hooks[].methods.grep/^re/。。但最终的结果是:TypeError:[reject,reverse!,reverse_each,reverse,replace,reject!,reduce,respond_to?]不是字符串您只需添加一个前导的splat星号,请参见上面的“我的编辑”,它在您的正则表达式中也起作用。
setup_hooks(*[].methods)