- Notifications
You must be signed in to change notification settings - Fork1.4k
Releases: rbenv/rbenv
rbenv 1.3.2
Compare
What's Changed
Special shoutouts to
- @BiggerNoise for helping medebug rbenv init
- @Tobias-pwnr for reporting abug with bash < 4.4
- @pnghai for the proposed fix#1605
Full Changelog:v1.3.1...v1.3.2
rbenv 1.3.1
Compare
What's Changed
- Add
/usr/etc/rbenv.d
to hooks path by@tomschr in#1587 - Use
readarray
in bash v4+ to avoid rbenv init hanging by@mislav in#1604 - Add instructions for Fedora Linux installation by@nethad in#1583
- Skip BW01 and BW02 error messages during tests by@mikelolasagasti in#1600
- Bump mislav/bump-homebrew-formula-action from 3.1 to 3.2 by@dependabot in#1598
New Contributors
- @nethad made their first contribution in#1583
- @tomschr made their first contribution in#1587
- @mikelolasagasti made their first contribution in#1600
Full Changelog:v1.3.0...v1.3.1
rbenv 1.3.0
Compare
Hi, it's been a long time! 👋 The theme for this release is user-friendliness: both the initial rbenv init setup and the documentation throughout the project should be clearer and easier to understand, especially for newcomers.
Feature Changes
The
rbenv init
command now modifies shell initialization files instead of printing instructions by@mislav in#1568This solves one of the most common pitfalls rbenv users were experiencing: many did not understand that
rbenv init
only printed instructions intended for humans but did not change anything in their shell environment. Now,rbenv init
actually modifies the environment, which seems to be what most users expected in the first place.Simplify resolving symlinks, remove native bash extension by@mislav in#1428
This solves a GPL license compliance issue where a GPL-licensed script was distributed with this project, which was not compatible with this project's license (MIT).#1395
Add man page for rbenv by@mislav in#1438
Preview the man page in HTML form here:https://rbenv.org/man/rbenv.1
Fixes
- Simplify
.ruby-version
file read by@scop in#1393 - Ignore shell builtins and functions when looking up commands in PATH by@mislav in#1448
- Use the newer “compsys” completion system for zsh completions by@Farid-NL in#1569
- Ensure zsh user's prior shell options don't interfere with indexing into an array of arguments by@richiethomas in#1422
- rbenv shell: properly declare global variables for zsh by@mislav in#1566
- Support ksh versions by@kpschoedel in#1504
Documentation Improvements
- Massive README overhaul by@mislav in#1433
- Update code block in readme for rbenv-doctor script by@audreee in#1353
- Make bash commands copy-able by GitHub by@simonschaufi in#1360
- README: grammar fix by@dmerejkowsky in#1379
- Redirect Debian/Ubuntu users to install using git by@tommyjanna in#1388
- Fix link to Pow because the server is down by@uraitakahito in#1418
- Use absolute path in
rbenv init
instructions if needed by@mislav in#1434 - Consistent syntax in man page by@mislav in#1453
- Make the usage syntax for arbitrary args consistent by@mislav in#1447
- Improve disabling instruction by@ahangarha in#1468
version-file
docs update by@richiethomas in#1512- help: have
--usage
always print a usage line by@mislav in#1515 - Update alerts in README by@dipree in#1537
- Clarify help text of some commands by@mislav in#1567
- Update link to maintained version of Bats by@acook in#1544
- Removes redundant ruby-build from brew-install by@jasonkarns in#1575
Housekeeping
- Use
test -aP
instead ofwhich -a
in test helper by@scop in#1359 - Add Shell linter - Differential-ShellCheck by@jamacku in#1419
- Followup to “Simplify resolving symlinks” feature:
- Restore Rubygems warning for user-installed gems by@mislav in#1445
- Use
read -a
to split output into an array by@mislav in#1450 rbenv version
- test coverage for preferring local over global version file by@richiethomas in#1456- Update actions/checkout version to v3 by@ydah in#1461
- ci(lint): pin
differential-shellcheck
tov3
tag by@jamacku in#1465 - Added dependabot update for GitHub Actions by@hsbt in#1476
- Bump mislav/bump-homebrew-formula-action from 1.4 to 2.2 by@dependabot in#1477
- Bump redhat-plumbers-in-action/differential-shellcheck from 3 to 4 by@dependabot in#1478
- Add spec to cover inclusion of etc/ sub-folders in plugins test by@richiethomas in#1492
- ci: trigger differential-shellcheck workflow on push by@jamacku in#1497
- Fix a dead link in a comment by@notEthan in#1505
- Bump actions/checkout from 3 to 4 by@dependabot in#1521
- Bump mislav/bump-homebrew-formula-action from 2.2 to 2.3 by@dependabot in#1526
- Bump mislav/bump-homebrew-formula-action from 2.3 to 3.0 by@dependabot in#1530
- Bump mislav/bump-homebrew-formula-action from 3.0 to 3.1 by@dependabot in#1531
- Bump redhat-plumbers-in-action/differential-shellcheck from 4 to 5 by@dependabot in#1533
- Move gem-rehash monkey patch by@benmelz in#1541
- Use bats-core instead of archived version by@hsbt in#1545
New Contributors
- @audreee made their first contribution in#1353
- @simonschaufi made their first contribution in#1360
- @dmerejkowsky made their first contribution in#1379
- @tommyjanna made their first contribution in#1388
- @uraitakahito made their first contribution in#1418
- @richiethomas made their first contribution in#1422
- @jamacku made their first contribution in#1419
- @ydah made their first contribution in#1461
- @ahangarha made their first contribution in#1468
- @hsbt made their first contribution in#1476
- @dependabot made their first contribution in#1477
- @notEthan made their first contribution in#1505
- @kpschoedel made their first contribution in#1504
- @dipree made their first contribution in#1537
- @benmelz made their first contribution in#1541
- @acook made their first contribution in#1544
- @Farid-NL made their first contribution in#1569
Full Changelog:v1.2.0...v1.3.0
Assets2
rbenv 1.2.0
Compare
Feature changes
Have shims survive upgrades via Homebrew#1350
Improve init: warn about missing shell and name the shell explicitly in the template#1099
Sort
rbenv versions
output semantically#1111Remove misleading
set by $(rbenv-version-origin)
message when system ruby is in use#1203Output more information in RBENV_DEBUG mode#1307
Improve compatibility with bash
set -u
(nounset) mode#1243Remove fish completion script#1212
Fixes
Speed up rehash#1334
Disallow path segments and directory traversal in
.ruby-version
files#1156Avoid
type: write error: broken pipe
warning#1195Fix fish shell initialization#1220
Avoid unintentional globbing in bash completion#1253
Strip
-<suffix>
when detecting the shell#1311Supply
head -n
flag explicitly#1332
Assets2
rbenv 1.1.2
Compare
Fix
rehash
mechanism for versions of bash that complain about clobbering/dev/null
Enforce absolute
RBENV_DIR
to avoid having to unsetCDPATH
rbenv-version-file
: ensure that the version file is a filerbenv init -
: fix output to work without args andset -u
rbenv shell
: better error message when shell integration wasn't enabledEnable freezing rbenv version via
rbenv version-name > .ruby-version
in the shellrbenv-which
: avoid changing PATH unless necessaryrbenv-prefix
: do not silence rbenv-which errors for system version
Assets2
rbenv 1.1.1
Compare
- Fix setting environment variable in fish shell
- Rename
OLD_RBENV_VERSION
toRBENV_*
convention
Assets2
rbenv 1.1.0
Compare
Backwards incompatible:
- Remove deprecated
ruby-local-exec
executable - Remove support for
.rbenv-version
legacy version file - Remove support for
default
,global
legacy global version files
Features:
- Add support for
rbenv shell -
style of invocation that restores previous version
Housekeeping:
- Adopt Contributor Covenant 1.4
- Replace
.
withsource
for fish shell - Unset CDPATH if it's set by the user
- Fix
rbenv <cmd> --help
forsh-*
commands - Expand literal tilde in PATH
Assets2
rbenv 1.0.0
Compare
rbenv is a robust tool that follows the UNIX methodology to implement per-project selection of Ruby versions and related runtime environment. The rbenv community maintainsan ecosystem of plugins, and rbenv has inspiredmany other forks for managing environments of different programming languages and other software tools.
rbenv works by:
- Having its
shims/
directory prepended to PATH environment variable; - Reading a
.ruby-version
file in the project's directory that specifies the Ruby version to be activated.
How to install/upgrade
Therbenv-installer script automates installation or upgrading rbenv on your system with either Homebrew (if available) or by using git to install to~/.rbenv
directory.
For manual installation instructions and more details, seeInstallation chapter of rbenv README.
Changes since v0.4.0
Speed 🐎
- Speed up rbenv with dynamically loaded
realpath
C extension - Speed up
rbenv rehash
when there aremany Ruby versions with similar sets of executables - Improve performance of
rbenv-which
for "system" version - Avoid
rbenv-exec
calling out torbenv-version-name
twice
To compile the optional C extension that speeds up rbenv across the board:
# substitute with location where you installed rbenv source:$cd~/.rbenv$ src/configure&& make -C src
New features 🎁
- New plugin hooks
version-name
andversion-origin
enable plugin authors to hook into version selection logic. rbenv versions --skip-aliases --bare
will only list versions that are not aliases (symlinks) for other versions.rbenv version-file <dir>
finds a.ruby-version
file in the target directory or any of its parent directories.rbenv init
now recognizes andsupports fish shell syntax. 🐟rbenv --debug <command>
is a shortcut for enabling RBENV_DEBUG.
Shell integration 🐚
- Fix
rbenv()
shell function inksh and dash - Ubuntu fix: use
source
instead of.
- Reliablydetect user's current shell in
rbenv init
- Improve detection of completion support for commands
- Fix detecting completions support on OpenBSD
- Check if completion script is readable
- Suppress shell warnings when hashing is disabled by
set +h
rbenv()
shell function preserves multiline output ofsh-*
commands
General enhancements ✨
rbenv local
now respects.ruby-version
file in parent directories as wellrbenv versions
now emits a warning when no Ruby versions were found- Consistently support
rbenv <command> --help
as alternative torbenv help <command>
- Improve parsing of git revision in
rbenv --version
when rbenv was installed from git - Export PS4 when RBENV_DEBUG is set for more informative debug output
Bug fixes 🪲
- Fix incorrect formatting of
rbenv-help
output under MAWK (Ubuntu) - Prefer
gawk
overawk
if both are available - Fix resolving symlinks in
rbenv-hooks
- Fix iterating through paths that have spaces in them
- Fix
rbenv rehash
when paths have spaces in them - More useful error message when rehash fails on a non-writable directory
- Make
rbenv-exec
fail for invalid Ruby version - Bail out early if
readlink
is not available - Properly resolve symlinks when listing hook scripts
- Better error message for
rbenv prefix system
- Fix reading
.ruby-version
on platforms that don't support process substitution - Remove carriage return characters in
.ruby-version
files - Fixes rbenv on OpenBSD and other systems that don't support
head -c
- Guard against exported
CDPATH
- Ensure that
IFS
is reset to its original value within hook scripts
Assets2
rbenv 0.4.0
Compare
New features
- rbenv now prefers
.ruby-version
files to.rbenv-version
files
for specifying local application-specific versions. The.ruby-version
file has the same format as.rbenv-version
but is
compatible with other Ruby version
managers. - Deprecated
ruby-local-exec
and moved its functionality into the
standardruby
shim. See theruby-local-exec wiki
page for
upgrade instructions. - Modified shims to include the full path to rbenv so that they can be
invoked without having rbenv's bin directory in the$PATH
. - Reworked
rbenv help
so that usage and documentation is stored as a
comment in each subcommand, enabling plugin commands to hook into
the help system. - Added support for full completion of the command line, not just the
first argument. - Added
rbenv --version
for printing the current version of rbenv. - Added
/usr/lib/rbenv/hooks
to the plugin hook search path.
Other changes and bug fixes
- Sped up
rbenv init
by avoiding rbenv reinitialization and by
using a simpler indexing approach. - Updated installation instructions for Zsh and Ubuntu users.
- Fixed
rbenv which
andrbenv prefix
with system Ruby versions. - Changed
rbenv exec
to avoid prepending the system Ruby location to$PATH
to fix issues running system Ruby commands that invoke other
commands. - Changed
rbenv rehash
to ensure it exits with a 0 status code under
normal operation, and to ensure outdated shims are removed first
when rehashing. - Modified
rbenv rehash
to runhash -r
afterwards, when shell
integration is enabled, to ensure the shell's command cache is
cleared. - Removed use of the
+=
operator to support older versions of Bash. - Adjusted non-bare
rbenv versions
output to includesystem
, if
present. - Improved documentation for installing and uninstalling Ruby
versions. - Fixed
rbenv versions
not to display a warning if the currently
specified version doesn't exist. - Fixed an instance of local variable leakage in the
rbenv
shell
function wrapper. - Changed
rbenv shell
to ensure it exits with a non-zero status on
failure. - Fixed
rbenv which
to account for path entries with spaces. - Changed
rbenv init
to accept option arguments in any order.
Assets2
rbenv 0.3.0
Compare
- Added an
rbenv root
command which prints the value of$RBENV_ROOT
, or the default root directory if it's unset. - Clarified Zsh installation instructions in the Readme.
- Removed some redundant code in
rbenv rehash
. - Fixed an issue with calling
readlink
for paths with spaces. - Changed Zsh initialization code to install completion hooks only for
interactive shells. - Added preliminary support for ksh.
rbenv rehash
creates or removes shims only when necessary instead
of removing and re-creating all shims on each invocation.- Fixed that
RBENV_DIR
, when specified, would be incorrectly
expanded to its parent directory. - Removed the deprecated
set-default
andset-local
commands. - Added a
--no-rehash
option torbenv init
for skipping the
automatic rehash when opening a new shell.