We’ve published guides in 2009, 2011, and 2012 for setting up your macOS laptop as a Ruby on Rails development machine. Many others have published and shared similar tutorials.
Instead of copying and pasting a series of steps from a blog post, a better approach is to leverage automation and the open source community to save time and get a more stable result.
For the past three years, we’ve been developing and maintaining Laptop, a shell script which turns a macOS laptop into an awesome development machine.
macOS
After setting up the prerequisites described in the project’s README, we run one line:
bash <(curl -s https://raw.githubusercontent.com/thoughtbot/laptop/master/mac)
How it works
The script should take less than 15 minutes to install (depends on the machine).
The script is short and is intended to be human-readable so that we know exactly what is installed and idempotent in case an error requires the script to be run two or more times.
What it sets up
Laptop currently sets up these common components:
- Zsh for the Unix shell
- A systems package manager (Aptitude or Homebrew)
- A Ruby version manager (rbenv)
- A Ruby installer (ruby-build)
- The latest stable version of Ruby
- A Ruby package manager (Bundler)
- A JavaScript package manager (NPM)
- Our most commonly-needed databases (Postgres and Redis)
- ImageMagick for cropping and resizing images
- Qt for headless JavaScript testing via Capybara Webkit
- A fuzzy finder (The Silver Searcher)
- A terminal multiplexer (tmux)
- A dotfile manager (rcm)
- CLIs for interacting with GitHub and Heroku
Extending the script
Individuals can add their own customizations in ~/.laptop.local
. An example
~/.laptop.local
might look like this:
#!/bin/sh
brew tap caskroom/cask
brew install brew-cask
brew cask install dropbox
brew cask install google-chrome
brew cask install rdio
The ~/.laptop.local
script can take advantage of the preparation the Laptop
script does, such as its shared functions and exit trap, to provide
better script output and aid debugging.
What’s next
After using Laptop to set up a development machine, a great next step is to use thoughtbot/dotfiles to configure Vim, Zsh, Git, and Tmux with well-tested settings that we’ve evolved since 2011.
Our dotfiles use the same ~/*.local
convention as the Laptop script in order
to manage team and personal dotfiles together with rcm.
Note: The original version of the Laptop script supported Linux, and that was described in this post. In 2014, we removed support for Linux. This post was edited to remove the Linux references, to avoid confusion.