If you're doing stuff with Ruby on a Mac, e.g. installling Jekyll or something, by default you'll end up having to use the sudo
command to do stuff, since the permission to modify the default config is not available to your user account.
This sucks and should be avoided. Here's how to fix that.
To make this better, we are going install a new, custom Ruby. This used to be a big, scary thing, but thanks to the awesome tools Homebrew and rbenv, it's a snap.*
A word of warning: you will have to use Terminal to install this stuff. If you are uncomfortable with text, words, and doing stuff with your computer beyond pointing and hoping, this may not work well for you. But if that's the case, I'm not sure why you were trying to use Ruby in the first place.
Homebrew (or just brew, since that's the name of the command you'll use), is a package manager for Mac OS. It makes installing all sorts of cool tools easy.
Open terminal and command your Mac to do your bidding with the following command:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
This little bit of magic will download the Homebrew install script and walk you through the install process. It's not too scary, and should only take a couple of minutes. Accept all defaults.
Once that's done, your system will be all set up to use Homebrew, and its superhappyfuncommand, brew
. Let's try it out by installing a helpful little utility, tree
.
$ brew install tree
Once you do that, run the tree
utility like this:
$ tree
You should get a pretty ASCII picture of your current directory structure.
Once you have Homebrew, your powers are much greater and you can install all sorts of stuff without ever having to invoke sudo
or mess with permissions. And you'll have harnessed the work of thousands of developers who are working in caves and darkend alcoves crafting Homebrew install packages just for you.
Ok, Homebrew is installed and you now have some new super powers. Let's use them to get you a new Ruby. We'll start by installing rbenv and it's ruby-build plugin. rbenv is a Ruby version manager that lets you change with Ruby you're currently using, and ruby-build helps you install a custom Ruby. Seriously, when you're done with this, you'll be like some sort of new X-Men team member, with the mutant power to install new Rubies with a thought.
Let's start by installing the tools:
$ brew install rbenv ruby-build
Assuming that all went to plan, you have just upgraded yourself and your Mac. But you can't quite use your new capabilities yet. You need to hook up rbenv so it can do some stuff. If you want to know what that stuff is, good for you! Go read the documentation. For now, here's what you need to do:
WARNING: If you use a shell other than bash, like zsh, you'll need a slightly different command set up the rbenv environment stuff. If you don't know what I'm talking about, you're probably fine. If you do, then you can figure this out on your own.
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
To make this apply to your current Terminal session, do this:
$ source ~/.bash_profile
Now it's time to install a new Ruby. We'll choose the most recent version of the Ruby, 2.7.1
$ rbenv install 2.7.1
That'll take a few minutes. Once it's done, you have a shiny new toy. But to play with it, you need to do a couple of other things. First, make the new Ruby the default for your directory:
$ rbenv local 2.7.1