RubyGems Navigation menu


Back to blog posts

2.3.0 Released

RubyGems 2.3.0 includes minor enhancements and bug fixes.

To update to the latest RubyGems you can run:

gem update --system

If you need to upgrade or downgrade please follow the how to upgrade/downgrade RubyGems instructions. To install RubyGems by hand see the Download RubyGems page.

Minor enhancements:

  • Added the open command which allows you to inspect the source of a gem using your editor. Issue #789 by Mike Perham. Pull request #804 by Vitali F.
  • The update command shows a summary of which gems were and were not updated. Issue #544 by Mark D. Blackwell. Pull request #777 by Tejas Bubane.
  • Improved “could not find ‘gem’” error reporting. Pull request #913 by Richard Schneeman.
  • Gem.use_gemdeps now accepts an argument specifying the path of the gem dependencies file. When the file is not found an ArgumentError is raised.
  • Writing a .lock file for a gem dependencies file is now controlled by the –[no-]lock option. Pull reuqest #774 by Jeremy Evans.
  • Suggestion of alternate names and spelling corrections during install can be suppressed with the –no-suggestions option. Issue #867 by Jimmy Cuadra.
  • Added mswin64 support. Pull request #881 by U. Nakamura.
  • A gem is installable from an IO again (as in RubyGems 1.8.x and older). Pull request #716 by Xavier Shay.
  • RubyGems no longer attempts to build extensions during activation. Instead a warning is issued instructing you to run gem pristine which will build the extensions for the current platform. Issue #796 by dunric.
  • Added Gem::UserInteraction#verbose which prints when the –verbose option is given. Pull request #811 by Aaron Patterson.
  • RubyGems can now fetch gems from private repositories using S3. Pull request #856 by Brian Palmer.
  • Added Gem::ConflictError subclass of Gem::LoadError so you can distinguish conflicts from other problems. Pull request #841 by Aaron Patterson.
  • Cleaned up unneeded load_yaml bootstrapping in Rakefile. Pull request #815 by Zachary Scott.
  • Improved performance of conflict resolution. Pull request #842 by Aaron Patterson.
  • Add documentation of “~> 0” to Gem::Version. Issue #896 by Aaron Suggs.
  • Added CONTRIBUTING file. Pull request #849 by Mark Turner.
  • Allow use of bindir in windows_stub_script in .bat Pull request #818 by @unak and @nobu
  • Use native File::PATH_SEPARATOR and remove $ before gem env on Gem::Dependency#to_specs. Pull request #915 by @parkr
  • RubyGems recommends SPDX IDs for licenses now. Pull request #917 by Benjamin Fleischer.

Bug fixes:

  • RubyGems now only fetches the latest specs to find misspellings which speeds up gem suggestions. Pull request #808 by Aaron Patterson.
  • The given .gem is installed again when multiple versions of the same gem exist in the current directory. Bug #875 by Prem Sichanugrist.
  • Local gems are preferred by name over remote gems again. Bug #834 by jonforums.
  • RubyGems can install local prerelease gems again. Pull request #866 by Aaron Patterson. Issue #813 by André Arko.
  • RubyGems installs development dependencies correctly again. Issue #893 by Jens Wille.
  • RubyGems only installs prerelease versions when they are requested again. Issue #853 by Seth Vargo, special thanks to Zachary Scott and Ben Moss. Issue #884 by Nathaniel Bibler.
  • Fixed RubyGems list and search command help. Pull request #905 and #928 by Gabriel Gilder.
  • The list of gems to uninstall is always sorted now. Bug #918 by postmodern.
  • The update command only updates exactly matching gem names now. Bug #919 by postmodern.
  • Gem::Server now supports prerelease versions. Bug #857 by Marcelo Alvim.
  • RubyGems no longer raises an exception immediately when gems are missing with RUBYGEMS_GEMDEPS. A warning is printed instead. Issue #886 by Michael Kaiser-Nyman.
  • Commands using the API no longer try to sign-in when a non-rubygems API key has been chosen. Bug #826 by Ben Sedat.
  • Updated documentation of Gem::Specification#executables to indicate that only ruby scripts are allowed. Bug #830 by Geoff Nixon.
  • Gem dependency API supports multiple platforms for #platform and #platforms now. Bug #821 by johnny5-.
  • Gem dependency API supports lockfiles without explicit sources. Bug #820 by johnny5-.
  • Gem dependency API supports lockfiles with multiple sources. Bug #822 by johnny5-, bug #851 by sumit shah.
  • Gem dependency API supports lockfiles with git sources using branch, tag and ref. Bug #822 by johnny5-, #931 by Christoph Blank.
  • Gem dependency API no longer raises an exception when a gem does not exist in one of the configured sources. Bug #897 by Michael Kaiser-Nyman.
  • Gem dependency API no longer lists development dependencies in the lockfile. Bug #768 by Diego Viola, #916 by Santiago Pastorino.
  • SSL configuration entries in ~/.gemrc are properly round-tripped. Bug #837 by Noah Luck Easterly.
  • The environment command now shows the system configuration directory where the all-users gemrc lives. Bug #827 by Ben Langfeld.
  • Improved speed of conflict checking when activating gems. Pull request #843 by Aaron Patterson.
  • Improved speed of levenshtein distance for gem suggestion misspellings. Pull requests #809, #812 by Aaron Patterson.
  • Restored persistent connections. Pull request #869 by Aaron Patterson.
  • Reduced requests when fetching gems with the bundler API. Pull request #773 by Charlie Somerville.
  • Reduced dependency prefetching to improve install speed. Pull requests #871, #872 by Matthew Draper.
  • RubyGems now avoids net/http auto-proxy detection. Issue #824 by HINOHARA Hiroshi.
  • Removed conversion of Gem::List (used for debugging installs) to unless necessary. Pull request #870 by Aaron Patterson.
  • RubyGems now prints release notes from the current release. Bug #814 by André Arko.
  • RubyGems allows installation of unsigned gems again with -P MediumSecurity and lower. Bug #859 by Justin S. Collins.
  • Fixed typo in Jim Weirich’s name. Ruby pull request #577 by Mo Khan.
  • Fixed typo in Gem.datadir documentation. Pull request #868 by Patrick Jones.
  • Fixed File.exists? warnings. Pull request #829 by SHIBATA Hiroshi.
  • Fixed show_release_notes test for LANG=C. Issue #862 by Luis Lavena.
  • Fixed Gem::Package from IO tests on windows. Patch from issue #861 by Luis Lavena.
  • Check for nil extensions as BasicSpecification does not initialize them. Pull request #882 by André Arko.
  • Fixed Gem::BasicSpecification#require_paths receives a String for @require_paths. Pull requrest #904 by @danielpclark
  • Fixed circular require warnings. Bug #908 by Zachary Scott.
  • Gem::Specification#require_paths can no longer accidentally be an Array. Pull requests #904, #909 by Daniel P. Clark.
  • Don’t build extensions if build_dir/extensions isn’t writable. Pull request #912 by @dunric
  • Gem::BasicSpecification#require_paths respects default_ext_dir_for now. Bug #852 by Vít Ondruch.
Eric Hodel