KGB

KGB spies on your classes and tells you what methods are being called. I wrote it to let me see what methods were being called on the socket library while writing Eventless.

##How it works

Tell KGB what you want it to watch, and it reports back after the program has run:

# kgb_test.rb

require 'kgb'

class Winston
  def pretend_to_be_a_sheep
    puts "Big Brother knows best"
  end

  def think_for_yourself!
    puts "Freedom is the freedom to say two plus two equals four"
  end
end

KGB.spy_on(Winston)

winston = Winston.new
winston.pretend_to_be_a_sheep
winston.pretend_to_be_a_sheep
winston.pretend_to_be_a_sheep
winston.think_for_yourself!
winston.pretend_to_be_a_sheep
$ ruby kgb_test.rb
Big Brother knows best
Big Brother knows best
Big Brother knows best
Freedom is the freedom to say two plus two equals four
Big Brother knows best

Winston:

method                    invocations
pretend_to_be_a_sheep     4
think_for_yourself!       1

KGB prints to standard error so you can isolate its output from the rest of the program:

$ ruby kgb_test.rb >/dev/null

Winston:

method                    invocations
pretend_to_be_a_sheep     4
think_for_yourself!       1

KGB can spy on multiple classes too!

KGB.spy_on(Socket, File)

##Install

$ gem install kgb

##Contributing

  1. Fork
  2. Branch
  3. Write code
  4. Commit
  5. Push
  6. Create Pull Request
  7. ...
  8. Profit!

##License

KGB is licensed under the MIT License. See LICENSE for more information.