Installs Ruby versions with Boxen
Ruby Puppet Shell
Pull request Compare This branch is 8 commits ahead, 227 commits behind boxen:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Ruby Puppet Module for Boxen

Build Status

Requires the following boxen modules:

  • boxen >= 3.2.0
  • repository >= 2.1
  • xquartz (OS X only)
  • autoconf (some ruby versions)
  • openssl (ruby versions >= 2.0.0)


# Set the global default ruby (auto-installs it if it can)
class { 'ruby::global':
  version => '1.9.3'

# ensure a certain ruby version is used in a dir
ruby::local { '/path/to/some/project':
  version => '1.9.3-p194'

# ensure a gem is installed for a certain ruby version
# note, you can't have duplicate resource names so you have to name like so
$version = "2.0.0"
ruby::gem { "bundler for ${version}":
  gem     => 'bundler',
  ruby    => $version,
  version => '~> 1.2.0'

# install a ruby version
ruby::version { '1.9.3-p194': }

# we provide a ton of predefined ones for you though
require ruby::1_9_3_p194

# Installing rbenv plugin
ruby::plugin { 'rbenv-vars':
  ensure => 'v1.2.0',
  source  => 'sstephenson/rbenv-vars'

# Run an installed gem
# rbenv-installed gems cannot be run in the boxen installation environment which uses the system
# ruby. The environment must be cleared (env -i) so an installed ruby (and gems) can be used in a new shell.
exec { "env -i zsh -c 'source /opt/boxen/ && RBENV_VERSION=${version} bundle install'":
  provider => 'shell',
  cwd => "~/src/project",
  require => [ Ruby::Gem["bundler for ${version}"], Package['zsh'] ]

Hiera configuration

The following variables may be automatically overridden with Hiera:

  - "bundler ~>1.3"
  - "pry"
    "ensure": "v1.0.0"
    "source": "sstephenson/rbenv-gem-rehash"

"ruby::rbenv_version": "v0.4.0"

"ruby::rbenv_root": "/home/deploy/rbenv"

"ruby::user": "deploy"

You can also use JSON if your Hiera is configured for that.