Setting Up a Local WSL Dev Environment For Ruby

If you’re anything like me, at some point you may screw up your local environment config so badly that it may need to be nuked from high orbit. You’ll then find yourself in a situation where everything needs to be reinstalled and it’s very unlikely that any of us remember the steps every single time. I’ll be honest, I’m doing this partly as a record for myself to reference whenever I need to reinstall, but at the same time, I hope that anyone else that finds themselves in the same boat will find this useful.

First things first, I prefer to use RBENV to manage my local ruby versions. This makes it easier to jump from project to project that may be using different versions.

sudo apt install rbenvrbenv init

Next up you’ll need to add a few lines to our .bashrc

nano ~/.bashrceval "$(rbenv init -)"

At this point restart your wsl in order for the bash changes to take affect.

wsl.exe --shutdown

Next up you want to install ruby-build in order to actually use the different versions of ruby that are available to RBENV

sudo apt install ruby-buildmkdir -p "$(rbenv root)"/pluginsgit clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

After that, use this to see which versions of ruby are available. If you see the latest version, then everything up to this point was successful.

rbenv install -l

That should be everything for RBENV, next up is NPM and YARN.

sudo apt install npm
sudo npm install -g yarn

Last up is installing postgres.

sudo apt-get install postgresql 
sudo apt-get install libpq-dev

Next up is setting up postgres.

sudo su - postgres
psql

You should end up in the postgres terminal, here’s where you’ll create the user and assign roles.

CREATE ROLE sampleuser WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD '1234';

Lastly, to see if the user and role was created correctly, while still in the psql terminal, run the following command. The last created user should be listed at the top.

/du

That wraps it up. At this point You should be good to go!