pry 0.12.2-java → 0.13.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +110 -1
  3. data/LICENSE +1 -1
  4. data/README.md +331 -269
  5. data/bin/pry +5 -0
  6. data/lib/pry.rb +133 -119
  7. data/lib/pry/basic_object.rb +8 -4
  8. data/lib/pry/block_command.rb +22 -0
  9. data/lib/pry/class_command.rb +194 -0
  10. data/lib/pry/cli.rb +40 -31
  11. data/lib/pry/code.rb +39 -27
  12. data/lib/pry/code/code_file.rb +28 -24
  13. data/lib/pry/code/code_range.rb +4 -2
  14. data/lib/pry/code/loc.rb +15 -8
  15. data/lib/pry/code_object.rb +40 -38
  16. data/lib/pry/color_printer.rb +47 -46
  17. data/lib/pry/command.rb +166 -369
  18. data/lib/pry/command_set.rb +76 -73
  19. data/lib/pry/command_state.rb +31 -0
  20. data/lib/pry/commands/amend_line.rb +86 -81
  21. data/lib/pry/commands/bang.rb +18 -14
  22. data/lib/pry/commands/bang_pry.rb +15 -11
  23. data/lib/pry/commands/cat.rb +61 -54
  24. data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
  25. data/lib/pry/commands/cat/exception_formatter.rb +71 -60
  26. data/lib/pry/commands/cat/file_formatter.rb +55 -49
  27. data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
  28. data/lib/pry/commands/cd.rb +40 -35
  29. data/lib/pry/commands/change_inspector.rb +29 -22
  30. data/lib/pry/commands/change_prompt.rb +44 -39
  31. data/lib/pry/commands/clear_screen.rb +16 -10
  32. data/lib/pry/commands/code_collector.rb +148 -133
  33. data/lib/pry/commands/disable_pry.rb +23 -19
  34. data/lib/pry/commands/easter_eggs.rb +19 -30
  35. data/lib/pry/commands/edit.rb +184 -161
  36. data/lib/pry/commands/edit/exception_patcher.rb +21 -17
  37. data/lib/pry/commands/edit/file_and_line_locator.rb +34 -23
  38. data/lib/pry/commands/exit.rb +39 -35
  39. data/lib/pry/commands/exit_all.rb +24 -20
  40. data/lib/pry/commands/exit_program.rb +20 -16
  41. data/lib/pry/commands/find_method.rb +168 -160
  42. data/lib/pry/commands/fix_indent.rb +16 -12
  43. data/lib/pry/commands/help.rb +140 -133
  44. data/lib/pry/commands/hist.rb +151 -150
  45. data/lib/pry/commands/import_set.rb +20 -16
  46. data/lib/pry/commands/jump_to.rb +25 -21
  47. data/lib/pry/commands/list_inspectors.rb +35 -28
  48. data/lib/pry/commands/ls.rb +124 -102
  49. data/lib/pry/commands/ls/constants.rb +59 -42
  50. data/lib/pry/commands/ls/formatter.rb +50 -46
  51. data/lib/pry/commands/ls/globals.rb +38 -34
  52. data/lib/pry/commands/ls/grep.rb +17 -13
  53. data/lib/pry/commands/ls/instance_vars.rb +29 -27
  54. data/lib/pry/commands/ls/interrogatable.rb +18 -12
  55. data/lib/pry/commands/ls/jruby_hacks.rb +47 -41
  56. data/lib/pry/commands/ls/local_names.rb +26 -22
  57. data/lib/pry/commands/ls/local_vars.rb +38 -28
  58. data/lib/pry/commands/ls/ls_entity.rb +47 -51
  59. data/lib/pry/commands/ls/methods.rb +44 -43
  60. data/lib/pry/commands/ls/methods_helper.rb +46 -42
  61. data/lib/pry/commands/ls/self_methods.rb +23 -22
  62. data/lib/pry/commands/nesting.rb +21 -17
  63. data/lib/pry/commands/play.rb +93 -82
  64. data/lib/pry/commands/pry_backtrace.rb +24 -17
  65. data/lib/pry/commands/pry_version.rb +15 -11
  66. data/lib/pry/commands/raise_up.rb +27 -22
  67. data/lib/pry/commands/reload_code.rb +60 -48
  68. data/lib/pry/commands/reset.rb +16 -12
  69. data/lib/pry/commands/ri.rb +55 -45
  70. data/lib/pry/commands/save_file.rb +45 -43
  71. data/lib/pry/commands/shell_command.rb +51 -51
  72. data/lib/pry/commands/shell_mode.rb +21 -17
  73. data/lib/pry/commands/show_doc.rb +81 -68
  74. data/lib/pry/commands/show_info.rb +189 -171
  75. data/lib/pry/commands/show_input.rb +16 -11
  76. data/lib/pry/commands/show_source.rb +109 -45
  77. data/lib/pry/commands/stat.rb +35 -31
  78. data/lib/pry/commands/switch_to.rb +21 -15
  79. data/lib/pry/commands/toggle_color.rb +20 -16
  80. data/lib/pry/commands/watch_expression.rb +89 -86
  81. data/lib/pry/commands/watch_expression/expression.rb +32 -27
  82. data/lib/pry/commands/whereami.rb +156 -148
  83. data/lib/pry/commands/wtf.rb +75 -50
  84. data/lib/pry/config.rb +311 -25
  85. data/lib/pry/config/attributable.rb +22 -0
  86. data/lib/pry/config/lazy_value.rb +29 -0
  87. data/lib/pry/config/memoized_value.rb +34 -0
  88. data/lib/pry/config/value.rb +24 -0
  89. data/lib/pry/control_d_handler.rb +28 -0
  90. data/lib/pry/core_extensions.rb +9 -7
  91. data/lib/pry/editor.rb +48 -21
  92. data/lib/pry/env.rb +18 -0
  93. data/lib/pry/exception_handler.rb +43 -0
  94. data/lib/pry/exceptions.rb +13 -16
  95. data/lib/pry/forwardable.rb +5 -1
  96. data/lib/pry/helpers.rb +2 -0
  97. data/lib/pry/helpers/base_helpers.rb +68 -197
  98. data/lib/pry/helpers/command_helpers.rb +50 -61
  99. data/lib/pry/helpers/documentation_helpers.rb +20 -13
  100. data/lib/pry/helpers/options_helpers.rb +14 -7
  101. data/lib/pry/helpers/platform.rb +7 -5
  102. data/lib/pry/helpers/table.rb +33 -26
  103. data/lib/pry/helpers/text.rb +17 -14
  104. data/lib/pry/history.rb +48 -56
  105. data/lib/pry/hooks.rb +21 -12
  106. data/lib/pry/indent.rb +54 -50
  107. data/lib/pry/input_completer.rb +248 -230
  108. data/lib/pry/input_lock.rb +8 -9
  109. data/lib/pry/inspector.rb +36 -24
  110. data/lib/pry/last_exception.rb +45 -45
  111. data/lib/pry/method.rb +141 -94
  112. data/lib/pry/method/disowned.rb +16 -4
  113. data/lib/pry/method/patcher.rb +12 -3
  114. data/lib/pry/method/weird_method_locator.rb +68 -44
  115. data/lib/pry/object_path.rb +33 -25
  116. data/lib/pry/output.rb +121 -35
  117. data/lib/pry/pager.rb +41 -42
  118. data/lib/pry/plugins.rb +25 -8
  119. data/lib/pry/prompt.rb +123 -54
  120. data/lib/pry/pry_class.rb +61 -98
  121. data/lib/pry/pry_instance.rb +217 -215
  122. data/lib/pry/repl.rb +18 -22
  123. data/lib/pry/repl_file_loader.rb +27 -21
  124. data/lib/pry/ring.rb +11 -6
  125. data/lib/pry/slop.rb +574 -563
  126. data/lib/pry/slop/commands.rb +164 -169
  127. data/lib/pry/slop/option.rb +172 -168
  128. data/lib/pry/syntax_highlighter.rb +26 -0
  129. data/lib/pry/system_command_handler.rb +17 -0
  130. data/lib/pry/testable.rb +59 -61
  131. data/lib/pry/testable/evalable.rb +21 -12
  132. data/lib/pry/testable/mockable.rb +18 -10
  133. data/lib/pry/testable/pry_tester.rb +71 -56
  134. data/lib/pry/testable/utility.rb +29 -21
  135. data/lib/pry/testable/variables.rb +49 -43
  136. data/lib/pry/version.rb +3 -1
  137. data/lib/pry/warning.rb +27 -0
  138. data/lib/pry/wrapped_module.rb +51 -42
  139. data/lib/pry/wrapped_module/candidate.rb +21 -14
  140. metadata +31 -30
  141. data/lib/pry/commands.rb +0 -6
  142. data/lib/pry/commands/disabled_commands.rb +0 -2
  143. data/lib/pry/commands/gem_cd.rb +0 -26
  144. data/lib/pry/commands/gem_install.rb +0 -32
  145. data/lib/pry/commands/gem_list.rb +0 -33
  146. data/lib/pry/commands/gem_open.rb +0 -29
  147. data/lib/pry/commands/gem_readme.rb +0 -25
  148. data/lib/pry/commands/gem_search.rb +0 -40
  149. data/lib/pry/commands/gem_stats.rb +0 -83
  150. data/lib/pry/commands/gist.rb +0 -102
  151. data/lib/pry/commands/install_command.rb +0 -54
  152. data/lib/pry/config/behavior.rb +0 -255
  153. data/lib/pry/config/convenience.rb +0 -28
  154. data/lib/pry/config/default.rb +0 -159
  155. data/lib/pry/config/memoization.rb +0 -48
  156. data/lib/pry/platform.rb +0 -91
  157. data/lib/pry/rubygem.rb +0 -84
  158. data/lib/pry/terminal.rb +0 -91
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4f6eb39efd0b5a9526d712978d04dded3b0200dd
4
- data.tar.gz: be149199ccce2d6851d3497942995b54ffb29fd4
2
+ SHA256:
3
+ metadata.gz: e3ae4ffd60475fd7653d02b380752ac8e84cd673cc6e76f232cda1e01ee303ad
4
+ data.tar.gz: 1b2c1619fce5542ab11e326c5ac3810237c872b1b6de26b469f61605c9c174af
5
5
  SHA512:
6
- metadata.gz: c97ddbf0ea69c78fb9a449b208bf57a569a413e261eca3d565c455f4df32ca1cb8cd2fd4bee986b0c8233e02f9d4d6efa356f4c58c9e641a9c2b3c62ffa759e6
7
- data.tar.gz: faad19c73cd4b222eaa13ca5aff0ea49650d37b8ad17d03f6e2e39611452fd4a800b13320fd111bb99a883b945d404adbf72c1ffa721da04c73db93ead0ded1b
6
+ metadata.gz: 1166e629ed40ab748089bef8665337c65b8922b05046a9b9b16c2ffab152cde437810309c8d7251c09960a916045e586d9c3783ec0e311b1d0dab43c00072af6
7
+ data.tar.gz: 7cc163e3363378ebaa2e28a8c1843b0c1bcbb0d7dd7fadbc5ac314df084ce47218525b807b1db827df9ae32bf794d6e301bf8c8140633b212d9af67dd2b1a7c7
@@ -1,4 +1,112 @@
1
- ### HEAD
1
+ ### master
2
+
3
+ ### [v0.13.0][v0.13.0] (March 21, 2020)
4
+
5
+ #### Features
6
+
7
+ * Added metadata to the gem (such as changelog URI, source code URI & bug
8
+ tracker URI), so it shows on https://rubygems.org/gems/pry
9
+ ([#1869](https://github.com/pry/pry/pull/1869))
10
+ * Added ability to forward ARGV to a Pry session via `--` (or `-`) when
11
+ launching Pry from shell
12
+ ([#1902](https://github.com/pry/pry/commit/5cd65d3c0eb053f6edcdf571eea5d0cd990626ed))
13
+ * Added `Pry::Config::LazyValue` & `Pry::Config::MemoizedValue`, which allow
14
+ storing callable procs in the config
15
+ ([#2024](https://github.com/pry/pry/pull/2024))
16
+ * Added the `rc_file` config option that tells Pry the path to `pryrc`
17
+ ([#2027](https://github.com/pry/pry/pull/2027))
18
+ * Added the `--code` flag to the `wtf` command, which shows code for each
19
+ backtrace frame ([#2037](https://github.com/pry/pry/pull/2037))
20
+ * Added the ability to paste method call chains with leading dots
21
+ ([#2060](https://github.com/pry/pry/pull/2060))
22
+
23
+ #### API changes
24
+
25
+ * `Pry::Prompt` is a class now and it can be instantiated to create new prompts
26
+ on the fly that are not registered with `Pry::Prompt#add`. Learn more about
27
+ its API in the docs ([#1877](https://github.com/pry/pry/pull/1877))
28
+
29
+ #### Deprecations
30
+
31
+ * Deprecated `Pry.config.exception_whitelist` in favor of
32
+ `Pry.config.unrescued_exceptions`
33
+ ([#1874](https://github.com/pry/pry/pull/1874))
34
+ * Deprecated `Pry.config.prompt = Pry::Prompt[:simple][:value]` in favor of
35
+ `Pry.config.prompt = Pry::Prompt[:simple]` when setting Pry prompt via
36
+ `pryrc`. `Pry::Prompt[:simple]` would return an instance of `Pry::Prompt`
37
+ instead of `Hash` ([#1877](https://github.com/pry/pry/pull/1877))
38
+ * Deprecated setting prompt via an array of two procs:
39
+ ([#1877](https://github.com/pry/pry/pull/1877))
40
+
41
+ ```ruby
42
+ # Deprecated, emits a warning.
43
+ Pry.config.prompt = [proc {}, proc {}]
44
+ ```
45
+
46
+ This will be removed in the next release.
47
+ * Deprecated the `show-doc` command. The `show-source -d` is the new recommended
48
+ way of reading docs ([#1934](https://github.com/pry/pry/pull/1934))
49
+ * Deprecated `Pry::Command#_pry_`. Use `Pry::Command#pry_instance` instead
50
+ ([#1989](https://github.com/pry/pry/pull/1989))
51
+
52
+ #### Breaking changes
53
+
54
+ * Deleted deprecated `Pry::Platform`
55
+ ([#1863](https://github.com/pry/pry/pull/1863))
56
+ * Deleted deprecated `Pry#{input/output}_array`
57
+ ([#1884](https://github.com/pry/pry/pull/1864))
58
+ * Deleted deprecated `Pry::Prompt::MAP`
59
+ ([#1866](https://github.com/pry/pry/pull/1866))
60
+ * Deleted deprecated methods of `Pry::Helpers::BaseHelpers` such as `mac_osx?`,
61
+ `linux?`, `windows?`, `windows_ansi?`, `jruby?`, `jruby_19?`, `mri?`,
62
+ `mri_19?`, `mri_2?` ([#1867](https://github.com/pry/pry/pull/1867))
63
+ * Deleted deprecated `Pry::Command#text`
64
+ ([#1865](https://github.com/pry/pry/pull/1865))
65
+ * Deleted deprecated `Pry::Method#all_from_common`
66
+ ([#1868](https://github.com/pry/pry/pull/1868))
67
+ * Deleted `install-command` ([#1979](https://github.com/pry/pry/pull/1979))
68
+ * Deleted `Pry::Helpers::BaseHelpers#command_dependencies_met?`
69
+ ([#1979](https://github.com/pry/pry/pull/1979))
70
+ * Deleted commands: `gem-cd`, `gem-install`, `gem-list`, `gem-open`,
71
+ `gem-readme`, `gem-search`, `gem-stats`
72
+ ([#1981](https://github.com/pry/pry/pull/1981))
73
+ * Deleted deprecated commands: `edit-method` and `show-command`
74
+ ([#2001](https://github.com/pry/pry/pull/2001))
75
+ * Deleted `Pry::Command#disabled_commands`
76
+ ([#2001](https://github.com/pry/pry/pull/2001))
77
+ * Deleted `Pry::BlockCommand#opts` (use `#context` instead)
78
+ ([#2003](https://github.com/pry/pry/pull/2003))
79
+ * Deleted `Pry.lazy` (use `Pry::Config::LazyValue` instead)
80
+ ([#2024](https://github.com/pry/pry/pull/2024))
81
+
82
+ #### Bug fixes
83
+
84
+ * Fixed bug where using `Pry.config.prompt_name` can return a
85
+ `Pry::Config::Lazy` instead of expected instance of `String`
86
+ ([#1890](https://github.com/pry/pry/commit/c8f23b3464d596c08922dc923c64bb57488e6227))
87
+ * Fixed `LoadError` being raised when using auto completions and Bundler
88
+ ([#1896](https://github.com/pry/pry/commit/85850f47e074fe01f93e5cb7d561e7c2de7aede9))
89
+ * Fixed bug where `Pry.input_ring` doesn't append duplicate elements
90
+ ([#1898](https://github.com/pry/pry/pull/1898))
91
+ * Fixed Ruby 2.6 warning about `Binding#source_location`
92
+ ([#1904](https://github.com/pry/pry/pull/1904))
93
+ * Fixed wrong `winsize` when custom `output` is passed to Pry
94
+ ([#2045](https://github.com/pry/pry/pull/2045))
95
+ * Fixed `XDG_CONFIG_HOME` & `XDG_DATA_HOME` precedence. When these env variables
96
+ are set, Pry no longer uses traditional files like `~/.pryrc` &
97
+ `~/.pry_history`. Instead, the env variable paths are loaded first
98
+ ([#2056](https://github.com/pry/pry/pull/2056))
99
+ * Fixed the `$SAFE will become a normal global variable in Ruby 3.0` warning on
100
+ Ruby 2.7 ([#2107](https://github.com/pry/pry/pull/2107))
101
+ * Fixed bug when `whereami -c` cannot show beginning of the class, which is on
102
+ the same line as another expression
103
+ ([#2098](https://github.com/pry/pry/pull/2098))
104
+ * Fixed bug when `Object#owner` is defined, which results into somewhat broken
105
+ method introspection ([#2113](https://github.com/pry/pry/pull/2113))
106
+ * Fixed bug when indentation leaves parts of input after pressing enter when
107
+ Readline is enabled with mode indicators for vi mode. This was supposed to be
108
+ fixed in v0.12.2 but it regressed
109
+ ([#2114](https://github.com/pry/pry/pull/2114))
2
110
 
3
111
  ### [v0.12.2][v0.12.2] (November 12, 2018)
4
112
 
@@ -951,3 +1059,4 @@ complete CHANGELOG:
951
1059
  [v0.12.0]: https://github.com/pry/pry/releases/tag/v0.12.0
952
1060
  [v0.12.1]: https://github.com/pry/pry/releases/tag/v0.12.1
953
1061
  [v0.12.2]: https://github.com/pry/pry/releases/tag/v0.12.2
1062
+ [v0.13.0]: https://github.com/pry/pry/releases/tag/v0.13.0
data/LICENSE CHANGED
@@ -3,7 +3,7 @@ License
3
3
 
4
4
  (The MIT License)
5
5
 
6
- Copyright (c) 2018 The Pry Team
6
+ Copyright (c) 2018 John Mair (banisterfiend)
7
7
 
8
8
  Permission is hereby granted, free of charge, to any person obtaining
9
9
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,20 +1,62 @@
1
+ Pry
2
+ ===
3
+
1
4
  [![Circle Build Status](https://circleci.com/gh/pry/pry.svg?style=shield)](https://circleci.com/gh/pry/pry)
2
5
  [![Code Climate](https://codeclimate.com/github/pry/pry.svg)](https://codeclimate.com/github/pry/pry)
3
- [![Gem Version](https://badge.fury.io/rb/pry.svg)](http://badge.fury.io/rb/pry)
4
- [![Documentation Status](http://inch-ci.org/github/pry/pry.svg?branch=master)](http://inch-ci.org/github/pry/pry)
6
+ [![Gem Version](https://badge.fury.io/rb/pry.svg)](https://badge.fury.io/rb/pry)
7
+ [![Documentation Status](https://inch-ci.org/github/pry/pry.svg?branch=master)](https://inch-ci.org/github/pry/pry)
5
8
  [![Downloads](https://img.shields.io/gem/dt/pry.svg?style=flat)](https://rubygems.org/gems/pry)
6
- <br><br>
7
- ![logo for Pry](https://www.dropbox.com/s/zp8o63kquby2rln/pry_logo_350.png?raw=1)
8
9
 
9
- **Other Resources**
10
+ ![Pry logo](https://www.dropbox.com/s/zp8o63kquby2rln/pry_logo_350.png?raw=1)
11
+
12
+ © John Mair ([banisterfiend](https://twitter.com/banisterfiend)) 2018<br> (Creator)
13
+
14
+ © Kyrylo Silin ([kyrylosilin](https://twitter.com/kyrylosilin)) 2018<br> (Maintainer)
15
+
16
+ **Alumni:**
17
+
18
+ * Conrad Irwin
19
+ * Ryan Fitzgerald
20
+ * Robert Gleeson
21
+
22
+ **Links:**
23
+
24
+ * https://pryrepl.org/
25
+ * [YARD API documentation](https://www.rubydoc.info/gems/pry)
26
+ * [Wiki](https://github.com/pry/pry/wiki)
27
+
28
+ Table of Contents
29
+ =================
30
+
31
+ * [Introduction](#introduction)
32
+ * [Key features](#key-features)
33
+ * [Installation](#installation)
34
+ * [Overview](#overview)
35
+ * [Commands](#commands)
36
+ * [Navigating around state](#navigating-around-state)
37
+ * [Runtime invocation](#runtime-invocation)
38
+ * [Command Shell Integration](#command-shell-integration)
39
+ * [Code Browsing](#code-browsing)
40
+ * [Documentation Browsing](#documentation-browsing)
41
+ * [Gist integration](#gist-integration)
42
+ * [Edit methods](#edit-methods)
43
+ * [Live Help System](#live-help-system)
44
+ * [Use Pry as your Rails Console](#use-pry-as-your-rails-console)
45
+ * [Syntax Highlighting](#syntax-highlighting)
46
+ * [Supported Rubies](#supported-rubies)
47
+ * [Contact](#contact)
48
+ * [License](#license)
49
+ * [Contributors](#contributors)
10
50
 
11
- [Skip to the website (recommended)](http://pryrepl.org/) <br />
12
- [Skip to the wiki](https://github.com/pry/pry/wiki)
51
+ Introduction
52
+ ------------
13
53
 
54
+ Pry is a runtime developer console and IRB alternative with powerful
55
+ introspection capabilities. Pry aims to be more than an IRB replacement. It is
56
+ an attempt to bring REPL driven programming to the Ruby language.
14
57
 
15
- Pry is a powerful alternative to the standard IRB shell for Ruby. It is
16
- written from scratch to provide a number of advanced features,
17
- including:
58
+ Key features
59
+ ------------
18
60
 
19
61
  * Source code browsing (including core C source with the pry-doc gem)
20
62
  * Documentation browsing
@@ -26,103 +68,117 @@ including:
26
68
  * Navigation around state (`cd`, `ls` and friends)
27
69
  * Runtime invocation (use Pry as a developer console or debugger)
28
70
  * Exotic object support (BasicObject instances, IClasses, ...)
29
- * A Powerful and flexible command system
71
+ * A powerful and flexible command system
30
72
  * Ability to view and replay history
31
- * Many convenience commands inspired by IPython, Smalltalk and other advanced REPLs
32
- * A wide-range number of [plugins](https://github.com/pry/pry/wiki/Available-plugins) that provide remote sessions, full debugging functionality, and more.
73
+ * Many convenience commands inspired by IPython, Smalltalk and other advanced
74
+ REPLs
75
+ * A wide-range number of
76
+ [plugins](https://github.com/pry/pry/wiki/Available-plugins) that provide
77
+ remote sessions, full debugging functionality, and more.
78
+
79
+ Installation
80
+ ------------
81
+
82
+ ### Bundler
83
+
84
+ ```ruby
85
+ gem 'pry', '~> 0.12.2'
86
+ ```
87
+
88
+ ### Manual
89
+
90
+ ```sh
91
+ gem install pry
92
+ ```
33
93
 
34
- Pry also aims to be more than an IRB replacement; it is an
35
- attempt to bring REPL driven programming to the Ruby language. It is
36
- currently not as powerful as tools like [SLIME](https://en.wikipedia.org/wiki/SLIME) for lisp, but that is the
37
- general direction Pry is heading.
94
+ Overview
95
+ --------
38
96
 
39
- Pry is also fairly flexible and allows significant user
40
- [customization](https://github.com/pry/pry/wiki/Customization-and-configuration)
41
- is trivial to set it to read from any object that has a `readline` method and write to any object that has a
42
- `puts` method - many other aspects of Pry are also configurable making
43
- it a good choice for implementing custom shells.
97
+ Pry is fairly flexible and allows significant user
98
+ [customization](https://github.com/pry/pry/wiki/Customization-and-configuration).
99
+ It is trivial to read from any object that has a `readline` method and
100
+ write to any object that has a `puts` method. Many other aspects of Pry are
101
+ also configurable, making it a good choice for implementing custom shells.
44
102
 
45
- Pry comes with an executable so it can be invoked at the command line. Just
103
+ Pry comes with an executable so it can be invoked at the command line. Just
46
104
  enter `pry` to start. A `pryrc` file in `$XDG_CONFIG_HOME/pry/` or the user's
47
105
  home directory will be loaded if it exists. Type `pry --help` at the command
48
106
  line for more information.
49
107
 
50
- Try `gem install pry-doc` for additional documentation on Ruby Core
51
- methods. The additional docs are accessed through the `show-doc` and
52
- `show-method` commands.
53
-
54
- * Install the [gem](https://rubygems.org/gems/pry): `gem install pry`
55
- * Browse the comprehensive [documentation at the official Pry wiki](https://github.com/pry/pry/wiki)
56
- * Read the [YARD API documentation](http://www.rubydoc.info/github/pry/pry/)
57
- * See the [source code](https://github.com/pry/pry)
58
-
59
108
  ### Commands
60
109
 
61
- Nearly every piece of functionality in a Pry session is implemented as
62
- a command. Commands are not methods and must start at the beginning of a line, with no
63
- whitespace in between. Commands support a flexible syntax and allow
64
- 'options' in the same way as shell commands, for example the following
65
- Pry command will show a list of all private instance methods (in
66
- scope) that begin with 'pa'
110
+ Nearly every piece of functionality in a Pry session is implemented as a
111
+ command. Commands are not methods and must start at the beginning of a line,
112
+ with no whitespace in between. Commands support a flexible syntax and allow
113
+ 'options' in the same way as shell commands, for example the following Pry
114
+ command will show a list of all private instance methods (in scope) that begin
115
+ with 'pa'
67
116
 
68
- pry(YARD::Parser::SourceParser):5> ls -Mp --grep ^pa
69
- YARD::Parser::SourceParser#methods: parse parser_class parser_type parser_type= parser_type_for_filename
117
+ ```ruby
118
+ pry(YARD::Parser::SourceParser):5> ls -Mp --grep ^pa
119
+ YARD::Parser::SourceParser#methods: parse parser_class parser_type parser_type= parser_type_for_filename
120
+ ```
70
121
 
71
122
  ### Navigating around state
72
123
 
73
- Pry allows us to pop in and out of different scopes (objects) using
74
- the `cd` command. This enables us to explore the run-time view of a
75
- program or library. To view which variables and methods are available
76
- within a particular scope we use the versatile [ls command.](https://gist.github.com/c0fc686ef923c8b87715)
77
-
78
- Here we will begin Pry at top-level, then Pry on a class and then on
79
- an instance variable inside that class:
80
-
81
- pry(main)> class Hello
82
- pry(main)* @x = 20
83
- pry(main)* end
84
- => 20
85
- pry(main)> cd Hello
86
- pry(Hello):1> ls -i
87
- instance variables: @x
88
- pry(Hello):1> cd @x
89
- pry(20):2> self + 10
90
- => 30
91
- pry(20):2> cd ..
92
- pry(Hello):1> cd ..
93
- pry(main)> cd ..
94
-
95
- The number after the `:` in the pry prompt indicates the nesting
96
- level. To display more information about nesting, use the `nesting`
97
- command. E.g
98
-
99
- pry("friend"):3> nesting
100
- Nesting status:
101
- 0. main (Pry top level)
102
- 1. Hello
103
- 2. 100
104
- 3. "friend"
105
- => nil
106
-
107
- We can then jump back to any of the previous nesting levels by using
108
- the `jump-to` command:
109
-
110
- pry("friend"):3> jump-to 1
111
- => 100
112
- pry(Hello):1>
124
+ Pry allows us to pop in and out of different scopes (objects) using the `cd`
125
+ command. This enables us to explore the run-time view of a program or
126
+ library. To view which variables and methods are available within a particular
127
+ scope we use the versatile [ls
128
+ command.](https://gist.github.com/c0fc686ef923c8b87715)
129
+
130
+ Here we will begin Pry at top-level, then Pry on a class and then on an instance
131
+ variable inside that class:
132
+
133
+ ```ruby
134
+ pry(main)> class Hello
135
+ pry(main)* @x = 20
136
+ pry(main)* end
137
+ => 20
138
+ pry(main)> cd Hello
139
+ pry(Hello):1> ls -i
140
+ instance variables: @x
141
+ pry(Hello):1> cd @x
142
+ pry(20):2> self + 10
143
+ => 30
144
+ pry(20):2> cd ..
145
+ pry(Hello):1> cd ..
146
+ pry(main)> cd ..
147
+ ```
148
+
149
+ The number after the `:` in the pry prompt indicates the nesting level. To
150
+ display more information about nesting, use the `nesting` command. E.g
151
+
152
+ ```ruby
153
+ pry("friend"):3> nesting
154
+ Nesting status:
155
+ 0. main (Pry top level)
156
+ 1. Hello
157
+ 2. 100
158
+ 3. "friend"
159
+ => nil
160
+ ```
161
+
162
+ We can then jump back to any of the previous nesting levels by using the
163
+ `jump-to` command:
164
+
165
+ ```ruby
166
+ pry("friend"):3> jump-to 1
167
+ => 100
168
+ pry(Hello):1>
169
+ ```
113
170
 
114
171
  ### Runtime invocation
115
172
 
116
- Pry can be invoked in the middle of a running program. It opens a Pry
117
- session at the point it's called and makes all program state at that
118
- point available. It can be invoked on any object using the
119
- `my_object.pry` syntax or on the current binding (or any binding)
120
- using `binding.pry`. The Pry session will then begin within the scope
121
- of the object (or binding). When the session ends the program continues with any
122
- modifications you made to it.
173
+ Pry can be invoked in the middle of a running program. It opens a Pry session at
174
+ the point it's called and makes all program state at that point available. It
175
+ can be invoked on any object using the `my_object.pry` syntax or on the current
176
+ binding (or any binding) using `binding.pry`. The Pry session will then begin
177
+ within the scope of the object (or binding). When the session ends the program
178
+ continues with any modifications you made to it.
123
179
 
124
- This functionality can be used for such things as: debugging,
125
- implementing developer consoles and applying hot patches.
180
+ This functionality can be used for such things as: debugging, implementing
181
+ developer consoles and applying hot patches.
126
182
 
127
183
  code:
128
184
 
@@ -145,246 +201,252 @@ puts "program resumes here."
145
201
 
146
202
  Pry session:
147
203
 
148
- pry(main)> a.hello
149
- hello world!
150
- => nil
151
- pry(main)> def a.goodbye
152
- pry(main)* puts "goodbye cruel world!"
153
- pry(main)* end
154
- => nil
155
- pry(main)> a.goodbye
156
- goodbye cruel world!
157
- => nil
158
- pry(main)> exit
159
-
160
- program resumes here.
204
+ ```ruby
205
+ pry(main)> a.hello
206
+ hello world!
207
+ => nil
208
+ pry(main)> def a.goodbye
209
+ pry(main)* puts "goodbye cruel world!"
210
+ pry(main)* end
211
+ => nil
212
+ pry(main)> a.goodbye
213
+ goodbye cruel world!
214
+ => nil
215
+ pry(main)> exit
216
+
217
+ program resumes here.
218
+ ```
161
219
 
162
220
  ### Command Shell Integration
163
221
 
164
- A line of input that begins with a '.' will be forwarded to the
165
- command shell. This enables us to navigate the file system, spawn
166
- editors, and run git and rake directly from within Pry.
222
+ A line of input that begins with a '.' will be forwarded to the command
223
+ shell. This enables us to navigate the file system, spawn editors, and run git
224
+ and rake directly from within Pry.
167
225
 
168
- Further, we can use the `shell-mode` command to incorporate the
169
- present working directory into the Pry prompt and bring in (limited at this stage, sorry) file name completion.
170
- We can also interpolate Ruby code directly into the shell by
226
+ Further, we can use the `shell-mode` command to incorporate the present working
227
+ directory into the Pry prompt and bring in (limited at this stage, sorry) file
228
+ name completion. We can also interpolate Ruby code directly into the shell by
171
229
  using the normal `#{}` string interpolation syntax.
172
230
 
173
231
  In the code below we're going to switch to `shell-mode` and edit the `pryrc`
174
232
  file. We'll then cat its contents and reload the file.
175
233
 
176
- pry(main)> shell-mode
177
- pry main:/home/john/ruby/projects/pry $ .cd ~
178
- pry main:/home/john $ .emacsclient .pryrc
179
- pry main:/home/john $ .cat .pryrc
180
- def hello_world
181
- puts "hello world!"
182
- end
183
- pry main:/home/john $ load ".pryrc"
184
- => true
185
- pry main:/home/john $ hello_world
186
- hello world!
187
-
188
- We can also interpolate Ruby code into the shell. In the
189
- example below we use the shell command `cat` on a random file from the
190
- current directory and count the number of lines in that file with
191
- `wc`:
192
-
193
- pry main:/home/john $ .cat #{Dir['*.*'].sample} | wc -l
194
- 44
234
+ ```ruby
235
+ pry(main)> shell-mode
236
+ pry main:/home/john/ruby/projects/pry $ .cd ~
237
+ pry main:/home/john $ .emacsclient .pryrc
238
+ pry main:/home/john $ .cat .pryrc
239
+ def hello_world
240
+ puts "hello world!"
241
+ end
242
+ pry main:/home/john $ load ".pryrc"
243
+ => true
244
+ pry main:/home/john $ hello_world
245
+ hello world!
246
+ ```
195
247
 
196
- ### Code Browsing
248
+ We can also interpolate Ruby code into the shell. In the example below we use
249
+ the shell command `cat` on a random file from the current directory and count
250
+ the number of lines in that file with `wc`:
197
251
 
198
- You can browse method source code with the `show-method` command. Nearly all Ruby methods (and some C methods, with the pry-doc
199
- gem) can have their source viewed. Code that is longer than a page is
200
- sent through a pager (such as less), and all code is properly syntax
201
- highlighted (even C code).
252
+ ```ruby
253
+ pry main:/home/john $ .cat #{Dir['*.*'].sample} | wc -l
254
+ 44
255
+ ```
202
256
 
203
- The `show-method` command accepts two syntaxes, the typical ri
204
- `Class#method` syntax and also simply the name of a method that's in
205
- scope. You can optionally pass the `-l` option to show-method to
206
- include line numbers in the output.
257
+ ### Code Browsing
207
258
 
208
- In the following example we will enter the `Pry` class, list the
209
- instance methods beginning with 're' and display the source code for the `rep` method:
259
+ You can browse method source code with the `show-source` command. Nearly all
260
+ Ruby methods (and some C methods, with the pry-doc gem) can have their source
261
+ viewed. Code that is longer than a page is sent through a pager (such as less),
262
+ and all code is properly syntax highlighted (even C code).
210
263
 
211
- pry(main)> cd Pry
212
- pry(Pry):1> ls -M --grep re
213
- Pry#methods: re readline refresh rep repl repl_epilogue repl_prologue retrieve_line
214
- pry(Pry):1> show-method rep -l
264
+ The `show-source` command accepts two syntaxes, the typical ri `Class#method`
265
+ syntax and also simply the name of a method that's in scope. You can optionally
266
+ pass the `-l` option to `show-source` to include line numbers in the output.
215
267
 
216
- From: /home/john/ruby/projects/pry/lib/pry/pry_instance.rb @ line 143:
217
- Number of lines: 6
268
+ In the following example we will enter the `Pry` class, list the instance
269
+ methods beginning with 're' and display the source code for the `rep` method:
218
270
 
219
- 143: def rep(target=TOPLEVEL_BINDING)
220
- 144: target = Pry.binding_for(target)
221
- 145: result = re(target)
222
- 146:
223
- 147: show_result(result) if should_print?
224
- 148: end
271
+ ```ruby
272
+ pry(main)> cd Pry
273
+ pry(Pry):1> ls -M --grep re
274
+ Pry#methods: re readline refresh rep repl repl_epilogue repl_prologue retrieve_line
275
+ pry(Pry):1> show-source rep -l
276
+
277
+ From: /home/john/ruby/projects/pry/lib/pry/pry_instance.rb:143
278
+ Number of lines: 6
279
+
280
+ 143: def rep(target=TOPLEVEL_BINDING)
281
+ 144: target = Pry.binding_for(target)
282
+ 145: result = re(target)
283
+ 146:
284
+ 147: show_result(result) if should_print?
285
+ 148: end
286
+ ```
225
287
 
226
288
  Note that we can also view C methods (from Ruby Core) using the
227
289
  `pry-doc` plugin; we also show off the alternate syntax for
228
- `show-method`:
290
+ `show-source`:
229
291
 
230
- pry(main)> show-method Array#select
231
-
232
- From: array.c in Ruby Core (C Method):
233
- Number of lines: 15
234
-
235
- static VALUE
236
- rb_ary_select(VALUE ary)
237
- {
238
- VALUE result;
239
- long i;
240
-
241
- RETURN_ENUMERATOR(ary, 0, 0);
242
- result = rb_ary_new2(RARRAY_LEN(ary));
243
- for (i = 0; i < RARRAY_LEN(ary); i++) {
244
- if (RTEST(rb_yield(RARRAY_PTR(ary)[i]))) {
245
- rb_ary_push(result, rb_ary_elt(ary, i));
246
- }
292
+ ```ruby
293
+ pry(main)> show-source Array#select
294
+
295
+ From: array.c in Ruby Core (C Method):
296
+ Number of lines: 15
297
+
298
+ static VALUE
299
+ rb_ary_select(VALUE ary)
300
+ {
301
+ VALUE result;
302
+ long i;
303
+
304
+ RETURN_ENUMERATOR(ary, 0, 0);
305
+ result = rb_ary_new2(RARRAY_LEN(ary));
306
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
307
+ if (RTEST(rb_yield(RARRAY_PTR(ary)[i]))) {
308
+ rb_ary_push(result, rb_ary_elt(ary, i));
247
309
  }
248
- return result;
249
310
  }
311
+ return result;
312
+ }
313
+ ```
250
314
 
251
315
  ### Documentation Browsing
252
316
 
253
- One use-case for Pry is to explore a program at run-time by `cd`-ing
254
- in and out of objects and viewing and invoking methods. In the course
255
- of exploring it may be useful to read the documentation for a
256
- specific method that you come across. Like `show-method` the `show-doc` command supports
257
- two syntaxes - the normal `ri` syntax as well as accepting the name of
258
- any method that is currently in scope.
259
-
260
- The Pry documentation system does not rely on pre-generated `rdoc` or
261
- `ri`, instead it grabs the comments directly above the method on
262
- demand. This results in speedier documentation retrieval and allows
263
- the Pry system to retrieve documentation for methods that would not be
264
- picked up by `rdoc`. Pry also has a basic understanding of both the
265
- rdoc and yard formats and will attempt to syntax highlight the
266
- documentation appropriately.
267
-
268
- Nonetheless, the `ri` functionality is very good and
269
- has an advantage over Pry's system in that it allows documentation
270
- lookup for classes as well as methods. Pry therefore has good
271
- integration with `ri` through the `ri` command. The syntax
272
- for the command is exactly as it would be in command-line -
317
+ One use-case for Pry is to explore a program at run-time by `cd`-ing in and out
318
+ of objects and viewing and invoking methods. In the course of exploring it may
319
+ be useful to read the documentation for a specific method that you come
320
+ across. Like `show-source` the `show-doc` command supports two syntaxes - the
321
+ normal `ri` syntax as well as accepting the name of any method that is currently
322
+ in scope.
323
+
324
+ The Pry documentation system does not rely on pre-generated `rdoc` or `ri`,
325
+ instead it grabs the comments directly above the method on demand. This results
326
+ in speedier documentation retrieval and allows the Pry system to retrieve
327
+ documentation for methods that would not be picked up by `rdoc`. Pry also has a
328
+ basic understanding of both the rdoc and yard formats and will attempt to syntax
329
+ highlight the documentation appropriately.
330
+
331
+ Nonetheless, the `ri` functionality is very good and has an advantage over Pry's
332
+ system in that it allows documentation lookup for classes as well as
333
+ methods. Pry therefore has good integration with `ri` through the `ri`
334
+ command. The syntax for the command is exactly as it would be in command-line -
273
335
  so it is not necessary to quote strings.
274
336
 
275
- In our example we will enter the `Gem` class and view the
276
- documentation for the `try_activate` method:
337
+ In our example we will enter the `Gem` class and view the documentation for the
338
+ `try_activate` method:
277
339
 
278
- pry(main)> cd Gem
279
- pry(Gem):1> show-doc try_activate
340
+ ```ruby
341
+ pry(main)> cd Gem
342
+ pry(Gem):1> show-doc try_activate
280
343
 
281
- From: /Users/john/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb @ line 201:
282
- Number of lines: 3
344
+ From: /Users/john/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:201
345
+ Number of lines: 3
283
346
 
284
- Try to activate a gem containing path. Returns true if
285
- activation succeeded or wasn't needed because it was already
286
- activated. Returns false if it can't find the path in a gem.
287
- pry(Gem):1>
347
+ Try to activate a gem containing path. Returns true if
348
+ activation succeeded or wasn't needed because it was already
349
+ activated. Returns false if it can't find the path in a gem.
350
+ pry(Gem):1>
351
+ ```
288
352
 
289
353
  We can also use `ri` in the normal way:
290
354
 
291
- pry(main) ri Array#each
292
- ----------------------------------------------------------- Array#each
293
- array.each {|item| block } -> array
294
- ------------------------------------------------------------------------
295
- Calls _block_ once for each element in _self_, passing that element
296
- as a parameter.
297
-
298
- a = [ "a", "b", "c" ]
299
- a.each {|x| print x, " -- " }
300
-
301
- produces:
302
-
303
- a -- b -- c --
304
-
305
- ### Gist integration
355
+ ```ruby
356
+ pry(main) ri Array#each
357
+ ----------------------------------------------------------- Array#each
358
+ array.each {|item| block } -> array
359
+ ------------------------------------------------------------------------
360
+ Calls _block_ once for each element in _self_, passing that element
361
+ as a parameter.
306
362
 
307
- If the `gist` gem is installed then method source or documentation can be gisted to GitHub with the
308
- `gist` command. The `gist` command is capable of gisting [almost any REPL content](https://gist.github.com/cae143e4533416529726), including methods, documentation,
309
- input expressions, command source, and so on. In the example below we will gist the C source
310
- code for the `Symbol#to_proc` method to GitHub:
363
+ a = [ "a", "b", "c" ]
364
+ a.each {|x| print x, " -- " }
311
365
 
312
- pry(main)> gist -m Symbol#to_proc
313
- Gist created at https://gist.github.com/5332c38afc46d902ce46 and added to clipboard.
314
- pry(main)>
366
+ produces:
315
367
 
316
- You can see the actual gist generated here: [https://gist.github.com/5332c38afc46d902ce46](https://gist.github.com/5332c38afc46d902ce46)
368
+ a -- b -- c --
369
+ ```
317
370
 
318
371
  ### Edit methods
319
372
 
320
- You can use `edit Class#method` or `edit my_method`
321
- (if the method is in scope) to open a method for editing directly in
322
- your favorite editor. Pry has knowledge of a few different editors and
323
- will attempt to open the file at the line the method is defined.
373
+ You can use `edit Class#method` or `edit my_method` (if the method is in scope)
374
+ to open a method for editing directly in your favorite editor. Pry has knowledge
375
+ of a few different editors and will attempt to open the file at the line the
376
+ method is defined.
324
377
 
325
378
  You can set the editor to use by assigning to the `Pry.editor`
326
- accessor. `Pry.editor` will default to `$EDITOR` or failing that will
327
- use `nano` as the backup default. The file that is edited will be
328
- automatically reloaded after exiting the editor - reloading can be
329
- suppressed by passing the `--no-reload` option to `edit`
379
+ accessor. `Pry.editor` will default to `$EDITOR` or failing that will use `nano`
380
+ as the backup default. The file that is edited will be automatically reloaded
381
+ after exiting the editor - reloading can be suppressed by passing the
382
+ `--no-reload` option to `edit`
330
383
 
331
- In the example below we will set our default editor to "emacsclient"
332
- and open the `Pry#repl` method for editing:
384
+ In the example below we will set our default editor to "emacsclient" and open
385
+ the `Pry#repl` method for editing:
333
386
 
334
- pry(main)> Pry.editor = "emacsclient"
335
- pry(main)> edit Pry#repl
387
+ ```ruby
388
+ pry(main)> Pry.editor = "emacsclient"
389
+ pry(main)> edit Pry#repl
390
+ ```
336
391
 
337
392
  ### Live Help System
338
393
 
339
- Many other commands are available in Pry; to see the full list type
340
- `help` at the prompt. A short description of each command is provided
341
- with basic instructions for use; some commands have a more extensive
342
- help that can be accessed via typing `command_name --help`. A command
343
- will typically say in its description if the `--help` option is
344
- available.
394
+ Many other commands are available in Pry; to see the full list type `help` at
395
+ the prompt. A short description of each command is provided with basic
396
+ instructions for use; some commands have a more extensive help that can be
397
+ accessed via typing `command_name --help`. A command will typically say in its
398
+ description if the `--help` option is available.
345
399
 
346
400
  ### Use Pry as your Rails Console
347
401
 
348
- The recommended way to use Pry as your Rails console is to add
349
- [the `pry-rails` gem](https://github.com/rweng/pry-rails) to
350
- your Gemfile. This replaces the default console with Pry, in
351
- addition to loading the Rails console helpers and adding some
352
- useful Rails-specific commands.
402
+ The recommended way to use Pry as your Rails console is to add [the `pry-rails`
403
+ gem](https://github.com/rweng/pry-rails) to your Gemfile. This replaces the
404
+ default console with Pry, in addition to loading the Rails console helpers and
405
+ adding some useful Rails-specific commands.
353
406
 
354
- If you don't want to change your Gemfile, you can still run a Pry
355
- console in your app's environment using Pry's `-r` flag:
407
+ If you don't want to change your Gemfile, you can still run a Pry console in
408
+ your app's environment using Pry's `-r` flag:
356
409
 
357
- pry -r ./config/environment
410
+ ```sh
411
+ pry -r ./config/environment
412
+ ```
358
413
 
359
- Also check out the [wiki](https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry)
414
+ Also check out the
415
+ [wiki](https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry)
360
416
  for more information about integrating Pry with Rails.
361
417
 
362
- ### Limitations:
418
+ ### Syntax Highlighting
363
419
 
364
- * Tab completion is currently a bit broken/limited this will have a
365
- major overhaul in a future version.
420
+ Syntax highlighting is on by default in Pry. If you want to change the colors,
421
+ check out the [pry-theme](https://github.com/kyrylo/pry-theme) gem.
366
422
 
367
- ### Syntax Highlighting
423
+ You can toggle the syntax highlighting on and off in a session by using the
424
+ `toggle-color` command. Alternatively, you can turn it off permanently by
425
+ putting the line `Pry.color = false` in your `pryrc` file.
426
+
427
+ Supported Rubies
428
+ ----------------
429
+
430
+ * CRuby >= 1.9.3
431
+ * JRuby >= 1.7
368
432
 
369
- Syntax highlighting is on by default in Pry. If you want to change
370
- the colors, check out the [pry-theme](https://github.com/kyrylo/pry-theme)
371
- gem.
433
+ Contact
434
+ -------
372
435
 
373
- You can toggle the syntax highlighting on and off in a session by
374
- using the `toggle-color` command. Alternatively, you can turn it off
375
- permanently by putting the line `Pry.color = false` in your `pryrc`
376
- file.
436
+ In case you have a problem, question or a bug report, feel free to:
377
437
 
378
- ### Future Directions
438
+ * ask a question on IRC (#pry on Freenode)
439
+ * [file an issue](https://github.com/pry/pry/issues)
440
+ * [tweet at us](https://twitter.com/pryruby)
379
441
 
380
- Many new features are planned such as:
442
+ License
443
+ -------
381
444
 
382
- * Increase modularity (rely more on plugin system)
383
- * Much improved documentation system, better support for YARD
384
- * Better support for code and method reloading and saving code
385
- * Extended and more sophisticated command system, allowing piping
386
- between commands and running commands in background
445
+ The project uses the MIT License. See LICENSE.md for details.
387
446
 
388
- ### Contact
447
+ Contributors
448
+ ------------
389
449
 
390
- Problems or questions? File an issue at [GitHub](https://github.com/pry/pry/issues).
450
+ Pry is primarily the work of [John Mair (banisterfiend)](https://github.com/banister), for full list
451
+ of contributors see the
452
+ [contributors graph](https://github.com/pry/pry/graphs/contributors).