Automate builds of fully-functional Ruby on Rails VMs for quick-start development.
Shell Lua Puppet Vim script Ruby
Latest commit 4f2dfa4 Sep 7, 2012 @CodeGnome Add separate class for Chrome.
Chrome has a different class depending on how it's invoked. It can be
Chrome, Chromium, or Google-chrome, so we'll cover all the bases.
Failed to load latest commit information.
bin Add symlink for git-daemon utility. Aug 26, 2012
lib Remove extra blank line. Aug 26, 2012
modules Add separate class for Chrome. Sep 7, 2012
.gitignore Initial public commit. Aug 9, 2012
Gemfile Initial public commit. Aug 9, 2012
Gemfile.lock Update Gemfile.lock to prevent errors. Aug 9, 2012
LICENSE Initial public commit. Aug 9, 2012
Rakefile Initial public commit. Aug 9, 2012
Vagrantfile Initial public commit. Aug 9, 2012

Ruby-Dev Box Builder

Copyright and Licensing

Copyright Notice

The copyright for the software, documentation, and associated files are held by the author.

Copyright 2012 Todd A. Jacobs
All rights reserved.

The AUTHORS file is also included in the source tree.

Software License

GPLv3 Logo

The software is licensed under the GPLv3. The LICENSE is also included in the source tree.

README License

Creative Commons BY-NC-SA

This README is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States License.


The goal of this project is to automate builds of a fully-functional Ruby on Rails development environment for managing multiple clients and projects simultaneously. This is a very opinionated piece of software, and has the following design objectives:

  • The build should be as automated as possible.
  • The build should limit user interaction as much as possible. It should "just work."
  • A full build-and-provisioning cycle should take less than 30 minutes on a modest Internet connection with commodity hardware.
  • The Vagrant base box should be light and fast. It currently weighs in at only 278 MB.
  • The full development environment should be fast and light. The virtual drive is currently using ~4.7 GB when fully provisioned, with ~5 GB of free space available for source code, binary assets, or additional software packages.
  • The development tools should always favor simplicity and power.

Contributions Welcome

This is an open-source project. Contributors are highly encouraged to add any optional Puppet modules, provisioning scripts, or tool-chains that appeal to a wide audience, but which are not required to build the box or run a basic Rails environment.

This project particularly welcomes:

  1. Improvements to the existing Puppet modules and provisioning logic.
  2. Addition of optional Puppet modules that do not impact the base build.
  3. Addition of user-selectable provisioning scripts.
  4. Ruby or Rails tool-chains that fit the design philosophy of the project.
  5. Speed or size optimizations for the basic build and provisioning process.
  6. RSpec and Cucumber tests for anything and everything. QA is important!
  7. Contributions to the wiki. Information is power!

Standing on the Shoulders of Giants

This is a small project that leverages the excellent work of some other projects, including Vagrant, VeeWee, VirtualBox, and RVM. The author is grateful to everyone who has made contributions to those projects, as well as to all the countless other projects that those projects rely upon in turn.

Thank you all.

Supported Software Versions

The software was tested against Ruby 1.9.3-p194 and Bash 4.2.10. See the project's Gemfile.lock for gem version information.

Getting Started with Ruby-Dev

# Download and install VirtualBox for your platform. See
# for details.

# Clone the project. The clone's directory name will be the name of
# your Vagrant instance. By default, this will be "ruby-dev" unless
# you pass a destination directory to git-clone.
git clone railsbox

# Change to your new clone.
cd railsbox

# Run the (mostly) automated installer.

# In some rare cases, you may need to shut down the virtual box and
# manually run `bundle exec vagrant up` to fully complete the Puppet
# provisioning.
bundle exec vagrant halt && bundle exec vagrant up

# Open a terminal in your new virtual machine and run the
# provisioning scripts if you need the additional features.

# Create a project launcher.

# Launch your project environment with the new launcher you just
# made. For example, if you used the default values:


  • Many, many rubies and gems fail to compile properly with Apple's new LLVM compilers. In particular, OS X 10.8 (Mountain Lion) brings no joy at the moment. Patches, contributions, and wiki entries are most welcome.
  • RVM and rbenv are unpleasant to provision through Puppet, especially when attempting to provision them solely for the vagrant user rather than as system-wide tools. This makes the post-Puppet provisioning scripts necessary, and is a pain point that might go away if enough talented people look at the problem.

Project Home Page