Pry v0.12.0 Release Notes

Release Date: 2018-11-04 // over 5 years ago
  • Major changes

    • โฌ‡๏ธ Dropped support for Rubinius (#1785)

    ๐Ÿ”‹ Features

    • โž• Added a new command, clear-screen, that clears the content of the screen Pry is running in regardless of platform (Windows or UNIX-like) (#1723)
    • โž• Added a new command, gem-stat, that prints gem statistics such as gem dependencies and downloads (#1707)
    • โž• Added support for nested exceptions for the wtf command (#1791)
    • โž• Added support for dynamic prompt names (#1833)
      # pryrc
      Pry.config.prompt_name = Pry.lazy { rand(100) }
    
      # Session
      [1] 80(main)>
      [2] 87(main)>
      [3] 30(main)>
    
    • โž• Added support for XDG Base Directory Specification (#1609, #1844, (#1848))
    • โœ‚ Removed the simple-prompt. Use change-prompt simple instead. The list-prompt command was removed and embedded as change-prompt --list (#1849)

    API changes

    • The following methods started accepting the new optional config parameter (#1809):
      • Pry::Helpers.tablify(things, line_length, config = Pry.config)
      • Pry::Helpers.tablify_or_one_line(heading, things, config = Pry.config)
      • Pry::Helpers.tablify_to_screen_width(things, options, config = Pry.config)
      • Pry::Helpers::Table.new(items, args, config = Pry.config)

    You are expected to pass a session-local _pry_.config instead of the global one.

    • โž• Added new method Pry::Config.assign, for creating a Config non-recursively (#1725)
    • โž• Added Pry.lazy, which is a helper method for values that need to be calculated dynamically. Currently, only config.prompt_name supports it (#1833)
    • Pry::Prompt responds to .[], .all & .add now. The Pry::Prompt.add method must be used for implementing custom prompts. See the API in the documentation for the class (#1846)

    ๐Ÿ’ฅ Breaking changes

    • โœ‚ Deleted the Pry::Helpers::Text.bright_default alias for Pry::Helpers::Text.bold (#1795)
    • Pry::Helpers.tablify_to_screen_width(things, options, config = Pry.config) requires options or nil in place of them.
    • Pry::Helpers::Table.new(items, args, config = Pry.config) requires args or nil in place of them.
    • Completely revamped Pry::HistoryArray (#1818).
      • It's been renamed to Pry::Ring (#1817)
      • The implementation has changed and as result, the following methods were removed:
      • Pry::Ring#length (use Pry::Ring#count instead)
      • #empty?, #each, #inspect, #pop!, #to_h
      • To access old Enumerable methods convert the ring to Array with #to_a
      • Fixed indexing for elements (e.g. _pry_.input_ring[0] always return some element and not nil)
    • Renamed Pry.config.prompt_safe_objects to Pry.config.prompt_safe_contexts
    • โœ‚ Removed deprecated Pry::CommandSet#before_command & Pry::CommandSet#after_command (#1838)

    ๐Ÿ—„ Deprecations

    • Deprecated _pry_.input_array & _pry_.output_array in favour of _pry_.input_ring & _pry_.output_ring respectively (#1814)
    • ๐Ÿ—„ Deprecated Pry::Command#text. Please use #black, #white, etc. directly instead (as you would with helper functions from BaseHelpers and CommandHelpers) (#1701)
    • Deprecated _pry_.input_array & _pry_.output_array in favour of _pry_.input_ring and _pry_.output_ring respectively (#1817)
    • ๐Ÿ—„ Deprecated Pry::Platform. Use Pry::Helpers::Platform instead. Note that Pry::Helpers::BaseHelpers still includes the Platform methods but emits a warning. You must switch to Pry::Helpers::Platform in your code (#1838, (#1845))
    • ๐Ÿ—„ Deprecated Pry::Prompt::MAP. You should use Pry::Prompt.all instead to access the same map (#1846)

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed a bug where cd Hash.new reported self as an instance of Pry::Config in the prompt (#1725)
    • Silenced the Could not find files for the given pattern(s) error message coming from where on Windows, when less or another pager is not installed (#1767)
    • ๐Ÿ›  Fixed possible double loading of Pry plugins' cli.rb on Ruby (>= 2.4) due to the realpath changes while invoking require (#1762, #1774)
    • ๐Ÿ›  Fixed NoMethodError on code objects that have a comment but no source when invoking show-source (#1779)
    • ๐Ÿ›  Fixed negative argument (ArgumentError) upon pasting code with tabs, which used to confuse automatic indentation (#1771)
    • ๐Ÿ›  Fixed Pry not being able to load history on Ruby 2.4.4+ when it contains the null character (#1789)
    • ๐Ÿ›  Fixed Pry raising errors on cd'ing into some objects that redefine method_missing and respond_to? (#1811)
    • ๐Ÿ›  Fixed bug when indentation leaves parts of input after pressing enter when Readline is enabled with mode indicators for vi mode (#1813, #1820, #1825)
    • ๐Ÿ›  Fixed edit not writing to history (#1749)

    Other changes

    • ๐Ÿ—„ Deprecated the Data constant to match Ruby 2.5 in the ls command (#1731)