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


chruby-build (12) Versions 0.3.0

Chef cookbook to install chruby and build rubies from source with Google Perftools and LibYAML options.

cookbook 'chruby-build', '= 0.3.0'
cookbook 'chruby-build', '= 0.3.0', :supermarket
knife supermarket install chruby-build
knife supermarket download chruby-build
Quality -%

Chruby Build Chef Cookbook

Build Status Cookbook Version

Chef cookbook to install chruby and build rubies from source with Google Perftools / TCMalloc : Thread-Caching Malloc and LibYAML options.



  • ubuntu >= 12.04



From the Community Site

Use the knife command:

$ knife cookbook site install chruby-build

With librarian-chef

Edit Cheffile

site ""

cookbook 'chruby-build', '~> 0.3.0'

Resolves and installs all of the dependencies:

$ librarian-chef install

With berkshelf

Edit Berksfile

source ""

cookbook 'chruby-build', '~> 0.3.0'

Install the cookbooks you specified in the Berksfile and their dependencies:

$ berks install


See [attributes/default.rb](attributes/default.rb)

<table> <tr> <th>Description</th> <th>Type</th> <th>Default</th> </tr> <tr> <td colspan="3"><tt>['chruby_build']['version']</tt></td> </tr> <tr> <td>chruby version</td> <td>String</td> <td><tt>"0.3.8"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['checksum']</tt></td> </tr> <tr> <td>chruby checksum (SHA256)</td> <td>String</td> <td><tt>"d980872cf2cd047b..."</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['auto_switching']</tt></td> </tr> <tr> <td>chruby auto switching</td> <td>Boolean</td> <td><tt>true</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['rubies']</tt></td> </tr> <tr> <td>rubies to install</td> <td>Array</td> <td><tt>[]</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['rubies_path']</tt></td> </tr> <tr> <td>path to install rubies</td> <td>String</td> <td><tt>"/opt/rubies"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['rubies_libs']</tt></td> </tr> <tr> <td>usefull libraries to install</td> <td>Array</td> <td><tt>["libssl-dev", "libreadline-dev", "zlib1g-dev"]</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['enable']</tt></td> </tr> <tr> <td>compile rubies with google_perftools (tcmalloc)</td> <td>Boolean</td> <td><tt>true</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['url']</tt></td> </tr> <tr> <td>google_perftools url</td> <td>String</td> <td><tt>""</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['version']</tt></td> </tr> <tr> <td>google_perftools version</td> <td>String</td> <td><tt>"2.1"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['google_perftools']['checksum']</tt></td> </tr> <tr> <td>google_perftools checksum</td> <td>String</td> <td><tt>"f3ade29924f89409..."</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['enable']</tt></td> </tr> <tr> <td>compile libyaml (latest release)</td> <td>Boolean</td> <td><tt>true</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['url']</tt></td> </tr> <tr> <td>libyaml url</td> <td>String</td> <td><tt>""</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['version']</tt></td> </tr> <tr> <td>libyaml version</td> <td>String</td> <td><tt>"0.1.6"</tt></td> </tr> <tr> <td colspan="3"><tt>['chruby_build']['libyaml']['checksum']</tt></td> </tr> <tr> <td>libyaml checksum</td> <td>String</td> <td><tt>"7da6971b4bd08a98..."</tt></td> </tr> </table>


Rubies attributes

  • id - required id and must be split by a dash (eg. ruby-2.1.1)
  • url - required ruby source
  • checksum - optional sha256 package checksum
  • gems - optional gems to install
  • environment - optional compilation environment variables

With node attributes

  "ark": {
    "prefix_root": "/usr/local/src"
  "chruby_build": {
    "rubies": [
        "id": "ruby-2.1.1",
        "url": "",
        "checksum": "c843df31ae88ed49f5393142b02b9a9f5a6557453805fd489a76fbafeae88941",
        "gems": ["bundler"],
        "environment": {
          "ARCHFLAGS": "-arch x86_64",
          "CFLAGS": "-g -O2",
          "CPPFLAGS": "-I/usr/include -I/usr/local/include"

With data bags

Data bag name must be rubies

$ knife data bag create rubies ruby-2.1.1

Edit data bag ruby-2.1.1.json

  "id": "ruby-2.1.1",
  "url": "",
  "checksum": "c843df31ae88ed49f5393142b02b9a9f5a6557453805fd489a76fbafeae88941",
  "gems": ["bundler"],
  "environment": {
    "ARCHFLAGS": "-arch x86_64",
    "CFLAGS": "-g -O2",
    "CPPFLAGS": "-I/usr/include -I/usr/local/include"

If you are using knife solo as provisioner, try knife-solo_data_bag.

Data bags have higher precedence.



This recipe only install chruby.

Just include chruby-build::default in your node's run_list:

  "run_list": [


This recipe install chruby and compile rubies from source.

Just include chruby-build::rubies in your node's run_list:

  "run_list": [




Ensure the gem dependencies are installed:

$ bundle install
$ bundle exec berks install

Running unit tests:

$ bundle exec rspec

Running integration tests:

$ bundle exec kitchen test rubies-data-bags-ubuntu-1404

Different test suites are available:

$ bundle exec kitchen list
$ bundle exec kitchen setup default-ubuntu-1404
$ bundle exec kitchen verify default-ubuntu-1404
$ bundle exec kitchen destroy default-ubuntu-1404


  • Add convenient LWRP to build rubies


  1. Fork the repository on Github
  2. Create a named feature branch (like add_component_x)
  3. Write your change
  4. Write tests for your change (if applicable)
  5. Run the tests, ensuring they all pass
  6. Submit a Pull Request using Github


Written by Vincent Durand.

Released under the terms of the MIT License. For further information, please see the file [LICENSE.txt](LICENSE.txt).

Dependent cookbooks

ark >= 0.8
apt >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

No quality metric results found