Sorpryse

This extension makes Pry work seamlessly with Sorbet projects.

Before: Incorrect method source

From: /home/aaron/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/sorbet-runtime-0.4.4929/lib/types/private/methods/_methods.rb @ line 208:
Owner: #<Class:Foo>
Visibility: public
Number of lines: 35

T::Private::ClassUtils.replace_method(mod, method_name) do |*args, &blk|
  if !T::Private::Methods.has_sig_block_for_method(new_method)
    # This should only happen if the user used alias_method to grab a handle
    # to the original pre-unwound `sig` method. I guess we'll just proxy the
    # call forever since we don't know who is holding onto this handle to

After: Method source and a signature!

From: playground/test.rb @ line 9:
Owner: #<Class:Foo>
Visibility: public
Sorbet: sig { returns(Integer) }
Number of lines: 3

def self.bar
  3
end

Installation

Add this line to your application's Gemfile:

gem 'sorpryse'

And then execute:

$ bundle

Or install it yourself as:

$ gem install sorpryse

Usage

Make sure you've required sorpryse. The $ command in Pry will be automatically overwritten to add the Sorbet-specific functionality.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/AaronC81/sorpryse.

License

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