Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从ruby方法开始_Ruby On Rails_Ruby_Debugging_Rubygems - Fatal编程技术网

Ruby on rails 从ruby方法开始

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

我使用jruby运行大量ruby脚本,尽管我使用的是纯ruby脚本的一部分

有时很难从输出中了解到底发生了什么或哪里出了问题

我想在我的std中为每种方法提供类似的信息: 输入方法A 方法A之外

现在我肯定可以把这些评论放到每一种方法中去,这感觉非常错误。有没有一种方法可以更详细地运行ruby,以便在我的日志中获得这些信息。希望我能避免使用很多宝石等。。因为这些都在一些托管服务器上,我将不得不花一些时间来获取更多的s/f。希望jruby本身能够提供一些有用的东西


谢谢

您可以使用以下代码:

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)