Ruby on Rails ⚓︎
Set up your dev environment⚓︎
There are several good instllation guides online, such as GoRails and Seriva's WSL2 Rails setup.
- Update all packages:
sudo apt update && sudo apt upgrade - Install dependencies:
sudo apt install build-essential git procps curl - Install brew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/admin/.profile eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" brew install gcc - Install rbenv:
brew install rbenv - Install Ruby:
sudo apt-get install -y zlib1g-dev rbenv install 3.0.2 --verbose rbenv global 3.0.2 rbenv init # Copy in ~/.profile - Install Rails:
- Install the yarn package manager:
npm install -g yarn - Install node:
brew install node - Install libsqlite3-dev:
apt-get install libsqlite3-dev - Install the rails gem:
gem install rails - Install webpacker:
rails webpacker:install
- Install the yarn package manager:
Get started⚓︎
- To create an app (it automatically includes
git initfor the project):rails new MY_APP_NAME - To run the web server:
cd MY_APP_NAME rails server - Configure git:
git config --global color.ui true git config --global user.name "YOUR-NAME" git config --global user.email "YOUR-EMAIL"
Create a Rails dockerized dev environment, guide here
Random Notes⚓︎
- Ruby on Rails follows the Model-Controller-View (MVC) architectural pattern: models are database tables, controllers are actions performed on the models, views are HTML pages rendered on the browser
- To create a controller,
rails generate controller NAME [action] - Views templates have
.html.erbextensions - Django's corresponding URLs are called routes (
\config\routes.rb) - The
rootroute can be referenced to a specific action of a specific controller (likeroot CONTROLLERNAME#ACTION) - To check the routes in this Rails project, run
rails routesor go to http://127.0.0.1:3000/rails/info/routes - A
resourceis generally anything that you want to reach with a URI and perform CRUD operations on. Simply put, it's a database table which is represented by a model, and acted on through a controller.