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

RSS

chruby-build (12) Versions 1.0.0

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

Policyfile
Berkshelf
Knife
cookbook 'chruby-build', '= 1.0.0', :supermarket
cookbook 'chruby-build', '= 1.0.0'
knife supermarket install chruby-build
knife supermarket download chruby-build
README
Dependencies
Quality 33%

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.

Requirements

supports

  • ubuntu >= 12.04

depends

version

  • chef >= 13.4

Installation

From the Community Site

Use the knife command:

$ knife cookbook site install chruby-build

With librarian-chef

Edit Cheffile

site "https://supermarket.chef.io/api/v1"

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

Resolves and installs all of the dependencies:

$ librarian-chef install

With berkshelf

Edit Berksfile

source "https://supermarket.getchef.com"

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

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

$ berks install

Attributes

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.9"</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>"7220a96e355b8a613929881c091ca85ec809153988d7d691299e0a16806b42fd"</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>"https://github.com/gperftools/gperftools/archive/gperftools-2.7.tar.gz"</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.7"</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>"3a88b4544315d550c87db5c96775496243fb91aa2cea88d2b845f65823f3d38a"</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>"https://pyyaml.org/download/libyaml/yaml-0.2.1.tar.gz"</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.2.1"</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>"78281145641a080fb32d6e7a87b9c0664d611dcb4d542e90baf731f51cbb59cd"</tt></td>
</tr>
</table>

Usage

Rubies attributes

  • id - required id and must be split by a dash (eg. ruby-2.3.4)
  • 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.5.3",
        "url": "https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz",
        "checksum": "9828d03852c37c20fa333a0264f2490f07338576734d910ee3fd538c9520846c",
        "gems": ["bundler 1.17.1"],
        "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.5.3

Edit data bag ruby-2.5.3.json

{
  "id": "ruby-2.5.3",
  "url": "https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz",
  "checksum": "9828d03852c37c20fa333a0264f2490f07338576734d910ee3fd538c9520846c",
  "gems": ["bundler 1.17.1"],
  "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.

Recipes

chruby-build::default

This recipe only installs chruby.

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

{
  "name":"my_node",
  "run_list": [
    "recipe[chruby-build::default]"
  ]
}

chruby-build::rubies

This recipe installs chruby and compile rubies from source.

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

{
  "name":"my_node",
  "run_list": [
    "recipe[chruby-build::rubies]"
  ]
}

Development

Dependencies

Installation

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

Contributing

  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

License

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 >= 4.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

Collaborator Number Metric
            

1.0.0 failed this metric

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

Contributing File Metric
            

1.0.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 https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file

Foodcritic Metric
            

1.0.0 failed this metric

FC120: Do not set the name property directly on a resource: chruby-build/recipes/rubies.rb:97
Run with Foodcritic Version 14.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any

No Binaries Metric
            

1.0.0 passed this metric

Testing File Metric
            

1.0.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 https://github.com/user/repo, and your repo must contain a TESTING.md file

Version Tag Metric
            

1.0.0 passed this metric