Manages [rbenv][rbenv_site] and its installed Rubies.
This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If you’d like to know more please visit sous-chefs.org or come chat with us on the Chef Community Slack in #sous-chefs.
This cookbook requires Chef 13.0+.
- Debian derivatives
- Fedora
- macOS (not currently tested)
- RHEL derivatives (RHEL, CentOS, Amazon Linux, Oracle, Scientific Linux)
- openSUSE and openSUSE leap
Please read
Example installations are provided in test/fixtures/cookbooks/test/recipes/.
A rbenv_system_install or rbenv_user_install is required to be set so that rbenv knows which version you want to use, and is installed on the system.
System wide installations of rbenv are supported by this cookbook, but discouraged by the rbenv maintainer, see [these][rbenv_issue_38] [two][rbenv_issue_306] issues in the rbenv repository.
Used to install a gem into the selected rbenv environment.
rbenv_gem 'gem_name' do
options # Optional: Options to pass to the gem command e.g. '--no-rdoc --no-ri'
source # Optional: source URL/location for gem.
timeout # Optional: Gem install timeout
version # Optional: Gem version to install
response_file # Optional: response file to reconfigure a gem
rbenv_version # Required: Which rbenv version to install the gem to.
user # Which user to install gem to. REQUIRED if you're using rbenv_user_install
endSets the global ruby version. The name of the resource is the version to set.
rbenv_global '2.5.1' do
user # Optional: if passed sets the users global version. Leave unset, to set the system global version
endIf a user is passed in to this resource it sets the global version for the user, under the users root_path (usually ~/.rbenv/version), otherwise it sets the system global version.
Installs a rbenv plugin.
rbenv_plugin 'ruby-build' do
git_url # Git URL of the plugin
git_ref # Git reference of the plugin
user # Optional: if passed installs to the users rbenv. Do not set, to set installs to the system rbenv.
endIf user is passed in, the plugin is installed to the users install of rbenv.
rbenv_rehash 'rehash' do
user 'vagrant' # Optional: if passed rehashes the user Ruby otherwise rehashes the system rbenv
endIf user is passed in, the user Ruby is rehashed rather than the system Ruby.
Installs a given Ruby version to the system or user location.
rbenv_ruby '2.5.1' do
user # Optional, but recommended: If passed, the user to install rbenv to
rbenv_action # Optional: the action to perform, 'install' (default), 'uninstall' etc
endShorter example rbenv_ruby '2.5.1'
Runs a rbenv aware script.
rbenv_script 'foo' do
rbenv_version #rbenv version to run the script against
environment # Optional: A Hash of environment variables in the form of ({"ENV_VARIABLE" => "VALUE"}).
user # Optional: User to run as
group # Optional: Group to run as
returns # Optional: Expected return code
code # Script code to run
endNote that environment overwrites the entire variable.
For example. setting the $PATH variable can be done like this:
rbenv_script 'bundle package' do
cwd node["bundle_dir"]
environment ({"PATH" => "/usr/local/rbenv/shims:/usr/local/rbenv/bin:#{ENV["PATH"]}"})
code "bundle package --all"
endWhere #{ENV["PATH"]} appends the existing PATH to the end of the newly set PATH.
Installs rbenv to the system location, by default /usr/local/rbenv
rbenv_system_install 'foo' do
git_url # URL of the plugin repo you want to checkout
git_ref # Optional: Git reference to checkout
update_rbenv # Optional: Keeps the git repo up to date
endInstalls rbenv to the user path, making rbenv available to that user only.
rbenv_user_install 'vagrant' do
git_url # Optional: Git URL to checkout rbenv from.
git_ref # Optional: Git reference to checkout e.g. 'master'
user # Which user to install rbenv to (also specified in the resources name above)
endThis cookbook takes advantage of managing profile fragments in an /etc/profile.d directory, common on most Unix-flavored platforms. Unfortunately, macOS does not support this idiom out of the box, so you may need to [modify][mac_profile_d] your user profile.
- Source hosted at [GitHub][repo]
- Report issues/Questions/Feature requests on [GitHub Issues][issues]
Pull requests are very welcome! Make sure your patches are well tested.
Mark Van de Vyver 🚇 |
This project exists thanks to all the people who contribute.
Thank you to all our backers!
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.