Logging all method calls in a Rails app

后端 未结 3 1077
太阳男子
太阳男子 2020-12-13 22:35

Is there an easy way to log all method calls in a Rails app?

My main use for this would be in testing (and in debugging tests). I want to have more of a history than

3条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-13 23:01

    It's easy to do. Just add 5 lines of code into your script/server:

    #!/usr/bin/env ruby
    set_trace_func proc {
      |event, file, line, id, binding, classname| 
      if event == "call" or event == "return" 
        printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname
      end
    }
    
    require File.expand_path('../../config/boot',  __FILE__)
    require 'commands/server'
    

    It's described at http://phrogz.net/ProgrammingRuby/ospace.html#tracingyourprogramsexecution

    Your application will become quite slow and you might get more output than you want. You can easily add more conditions on file/class/function names to avoid printing unwanted stuff.

提交回复
热议问题