RubySnooper

RubySnooper is Poor man's debugger heavily inspired by PySnooper

Installation

Add this line to your application's Gemfile:

gem 'ruby_snooper'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ruby_snooper

Usage

class SampleClass
  extend RubySnooper
  snoop :sample_instance_method
  snoop_class_methods :sample_class_method

  def self.sample_class_method(arg1, arg2)
    arg1 = arg1 + 1
    arg3 = arg1 + arg2
    arg3 * 2
  end

  def sample_instance_method(arg1, arg2)
    arg1 = arg1 + 1
    arg3 = arg1 + arg2
    arg3 * 2
  end
end

SampleClass.new.sample_instance_method(1, 2)
SampleClass.sample_class_method(1, 2)

The output to stderr is:

From /some/file/path.rb
Starting var arg1 = 1, arg2 = 2, arg3 = nil
02:06:31,239 call   59     def sample_instance_method(arg1, arg2)
02:06:31,239 line   60       arg1 = arg1 + 1
Modified var arg1 = 2
02:06:31,239 line   61       arg3 = arg1 + arg2
Modified var arg3 = 4
02:06:31,239 line   62       arg3 * 2
02:06:31,239 return 63     end
Return value 8
From /some/file/path.rb
Starting var arg1 = 1, arg2 = 2, arg3 = nil
02:06:31,240 call   53     def self.sample_class_method(arg1, arg2)
02:06:31,240 line   54       arg1 = arg1 + 1
Modified var arg1 = 2
02:06:31,240 line   55       arg3 = arg1 + arg2
Modified var arg3 = 4
02:06:31,241 line   56       arg3 * 2
02:06:31,241 return 57     end
Return value 8

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ruby_snooper. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the RubySnooper project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.