Lightning Talk Pry

Lightning Talk Pry

Pry is a great alternative to IRB, with many features the latter doesn't have. This talk quickly reviews some of them.

F535463c230255354164fd4d5519f91b?s=128

Kevin Sołtysiak

February 04, 2014
Tweet

Transcript

  1. PRY More than « IRB with colors »

  2. WHY? IRB works, right?

  3. Well…

  4. Syntax coloration? ! Persistent history? ! Paging results?

  5. PRY Has those *by default* ! And more.

  6. Shell integration

  7. [1] pry(main)> .git status On branch master Your branch is

    up-to-date with 'origin/master'.
  8. Dev-friendly

  9. [8] pry(main)> cd FileUtils
 [9] pry(FileUtils):1> ls constants: DryRun Entry_

    LOW_METHODS LowMethods METHODS FileUtils.methods: cd compare_stream install mv … FileUtils#methods: mode_to_s instance variables: @fileutils_label @fileutils_output locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
  10. [10] pry(FileUtils):1> cd [] [11] pry(#<Array>):2> ls
 Enumerable#methods: [...] Array#methods:

    [...]
 self.methods: __pry__
  11. [3] pry(main)> show-doc String#gsub From: string.c (C Method): Owner: String

    Visibility: public Signature: gsub(*arg1) Number of lines: 34 ! Returns a copy of str with the all occurrences of pattern substituted for the second argument. [...]
  12. [10] pry(main)> show-source String#gsub From: string.c (C Method): Number of

    lines: 5 ! static VALUE rb_str_gsub(int argc, VALUE *argv, VALUE str) { return str_gsub(argc, argv, str, 0); }
  13. [5] pry(main)> raise ArgumentError, "Date expected, received Date" ArgumentError: Date

    expected, received Date from (pry):1:in `__pry__'
 ! ! ! ! ! ! !
  14. [5] pry(main)> raise ArgumentError, "Date expected, received Date" ArgumentError: Date

    expected, received Date from (pry):1:in `__pry__'
 [6] pry(main)> wtf? Exception: ArgumentError: Date expected, received Date -- 0: (pry):1:in `__pry__' 1: /Users/ksol/.rbenv/versions/2.0.0-p247/lib/ruby/gems/ 2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:328:in `eval’ …
  15. See/replay history inside a session ! Special locals (last file

    opened, etc) ! Open in $EDITOR ! …
  16. DEBUGGER

  17. binding.pry

  18. Plugins! ! eg: pry-nav, pry-debugger, pry-stack_explorer ! => next, step,

    finish, break, up, down, show- stack, …
  19. http://pryrepl.org

  20. Thanks! @ksol (twitter/SO/Github)