Slide 1

Slide 1 text

PRY More than « IRB with colors »

Slide 2

Slide 2 text

WHY? IRB works, right?

Slide 3

Slide 3 text

Well…

Slide 4

Slide 4 text

Syntax coloration? ! Persistent history? ! Paging results?

Slide 5

Slide 5 text

PRY Has those *by default* ! And more.

Slide 6

Slide 6 text

Shell integration

Slide 7

Slide 7 text

[1] pry(main)> .git status On branch master Your branch is up-to-date with 'origin/master'.

Slide 8

Slide 8 text

Dev-friendly

Slide 9

Slide 9 text

[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_

Slide 10

Slide 10 text

[10] pry(FileUtils):1> cd [] [11] pry(#):2> ls
 Enumerable#methods: [...] Array#methods: [...]
 self.methods: __pry__

Slide 11

Slide 11 text

[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. [...]

Slide 12

Slide 12 text

[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); }

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

[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’ …

Slide 15

Slide 15 text

See/replay history inside a session ! Special locals (last file opened, etc) ! Open in $EDITOR ! …

Slide 16

Slide 16 text

DEBUGGER

Slide 17

Slide 17 text

binding.pry

Slide 18

Slide 18 text

Plugins! ! eg: pry-nav, pry-debugger, pry-stack_explorer ! => next, step, finish, break, up, down, show- stack, …

Slide 19

Slide 19 text

http://pryrepl.org

Slide 20

Slide 20 text

Thanks! @ksol (twitter/SO/Github)