Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status


poise-ruby (7) Versions 2.2.0

A Chef cookbook for managing Ruby installations.

cookbook 'poise-ruby', '= 2.2.0', :supermarket
cookbook 'poise-ruby', '= 2.2.0'
knife supermarket install poise-ruby
knife supermarket download poise-ruby
Quality 43%

Poise-Ruby Cookbook

Build Status
Gem Version
Cookbook Version

A Chef cookbook to provide a unified interface for
installing Ruby and running things with it. This README covers the 2.x version
of the cookbook, the 1.x version is very different and no longer supported.

Quick Start

To install the latest available version of Ruby 2.x and then use it to install
some gems:

ruby_runtime '2'

ruby_gem 'rake'

bundle_install '/path/to/Gemfile' do
  without 'development'
  deployment true


Chef 12.1 or newer is required.


Attributes are used to configure the default recipe.

  • node['poise-ruby']['install_ruby'] – Install a Ruby runtime. (default: true)
  • node['poise-ruby']['install_chef_ruby'] – Create a ruby_runtime using the :chef provider. Doesn't actually install anything. (default: true)



The default recipe installs Ruby based on the node attributes. It is entirely
optional and can be ignored in favor of direct use of the ruby_runtime



The ruby_runtime resource installs a Ruby interpreter.

ruby_runtime 'any' do
  version ''


  • :install – Install the Ruby interpreter. (default)
  • :uninstall – Uninstall the Ruby interpreter.


  • version – Version of Ruby to install. If a partial version is given, use the latest available version matching that prefix. (name properties)

Provider Options

The poise-ruby library offers an additional way to pass configuration
information to the final provider called "options". Options are key/value pairs
that are passed down to the ruby_runtime provider and can be used to control how it
installs Ruby. These can be set in the ruby_runtime
resource using the options method, in node attributes or via the
ruby_runtime_options resource. The options from all sources are merged
together in to a single hash.

When setting options in the resource you can either set them for all providers:

ruby_runtime 'myapp' do
  version '2.1'
  options dev_package: false

or for a single provider:

ruby_runtime 'myapp' do
  version '2.1'
  options :system, dev_package: false

Setting via node attributes is generally how an end-user or application cookbook
will set options to customize installations in the library cookbooks they are using.
You can set options for all installations or for a single runtime:

# Global, for all installations.
override['poise-ruby']['options']['dev_package'] = false
# Single installation.
override['poise-ruby']['myapp']['version'] = '2.2'

The ruby_runtime_options resource is also available to set node attributes
for a specific installation in a DSL-friendly way:

ruby_runtime_options 'myapp' do
  version '2.2'

Unlike resource attributes, provider options can be different for each provider.
Not all providers support the same options so make sure to the check the
documentation for each provider to see what options the use.


The ruby_runtime_options resource allows setting provider options in a
DSL-friendly way. See the Provider Options section for more
information about provider options overall.

ruby_runtime_options 'myapp' do
  version '2.2'


  • :run – Apply the provider options. (default)


  • resource – Name of the ruby_runtime resource. (name property)
  • for_provider – Provider to set options for.

All other property keys will be used as options data.


The ruby_execute resource executes a Ruby script using the configured runtime.

ruby_execute 'myapp.rb' do
  user 'myuser'

This uses the built-in execute resource and supports all the same properties.


  • :run – Execute the script. (default)


  • command – Script and arguments to run. Must not include the ruby. (name property)
  • ruby – Name of the ruby_runtime resource to use. If not specified, the most recently declared ruby_runtime will be used.

For other properties see the Chef documentation.


The ruby_gem resource is a subclass of the standard gem_package resource to
install the gem with the configured runtime.

ruby_gem 'rake' do
  version ' 10.4.2'

All actions and attributes match the standard gem_package resource with the
addition of a ruby attribute matching ruby_execute.


The bundle_install resource installs gems based on a Gemfile using

bundle_install '/path/to/Gemfile' do
  deployment true
  jobs 3

The underlying bundle command will run on every converge, but notifications
will only be triggered if a gem is actually installed.


  • :install – Run bundle install. (default)
  • :update – Run bundle update.


  • path – Path to a Gemfile or a directory containing a Gemfile. (name property)
  • binstubs – Enable binstubs. If set to a string it is the path to generate stubs in.
  • bundler_version – Version of bundler to install. If unset the latest version is used.
  • deployment – Enable deployment mode.
  • gem_binary – Path to the gem binary. If unset this uses the ruby_runtime parent.
  • jobs – Number of parallel installations to run.
  • retry – Number of times to retry failed installations.
  • ruby – Name of the ruby_runtime resource to execute against.
  • user – User to run bundler as.
  • vendor – Enable local vendoring. This maps to the --path option in bundler, but that attribute name is already used.
  • without – Group or groups to not install.

Ruby Providers


The system provider installs Ruby using system packages. This is currently
only tested on platforms using apt-get and yum (Debian, Ubuntu, RHEL, CentOS
Amazon Linux, and Fedora) and is the default provider on those platforms. It
may work on other platforms but is untested.

ruby_runtime 'myapp' do
  provider :system
  version '2.1'


  • dev_package – Install the package with the headers and other development files. (default: true)
  • rubygems_package – Install rubygems from a package. This is only needed for Ruby 1.8. (default: true on RHEL 6)
  • package_name – Override auto-detection of the package name.
  • package_upgrade – Install using action :upgrade. (default: false)
  • package_version – Override auto-detection of the package version.
  • version – Override the Ruby version.


The scl provider installs Ruby using the Software Collections
packages. This is only available on RHEL and CentOS. SCL offers more
recent versions of Ruby than the system packages for the most part. If an SCL
package exists for the requested version, it will be used in preference to the
system provider.

ruby_runtime 'myapp' do
  provider :scl
  version '2.2'


The chef provider uses the Ruby environment included in the Omnibus packages.
Great care should be taken when using this provider.

ruby_runtime 'myapp' do
  provider :chef
  version '2.1'


  • version – Override the Ruby version.


The ruby_build provider uses ruby-build
to compile and install Ruby. It can be found in the
poise-ruby-build cookbook.


Development sponsored by Bloomberg.

The Poise test server infrastructure is sponsored by Rackspace.


Copyright 2015-2016, Noah Kantrowitz

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.



  • Add support for Ubuntu 16.04 system packages.
  • Support new SCL structure and packages.


  • Create ChefSpec matchers for the ruby_gem resource.


  • Fix version field for default Ruby runtime.
  • Add a :dummy provider for ruby_runtime for unit testing or complex overrides.
  • Improved handling for bundle exec in ruby_execute.
  • New integration test harness.


  • Initial release (again)!


  • Pre-history, we do not speak of these times.

Collaborator Number Metric

2.2.0 failed this metric

Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.

Contributing File Metric

2.2.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Foodcritic Metric

2.2.0 passed this metric

License Metric

2.2.0 failed this metric

poise-ruby does not have a valid open source license.
Acceptable licenses include Apache-2.0, apachev2, MIT, mit, GPL-2.0, gplv2, GPL-3.0, gplv3.

No Binaries Metric

2.2.0 passed this metric

Testing File Metric

2.2.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Version Tag Metric

2.2.0 passed this metric