Rails 101
By: Aleksandra Bystranowska-Takahashi
Tags: Ruby on Rails, Girls In Tech, Software Development, Rails

Installation/ Creating a new Rails app/ Console / MVC/ Static and Dynamic Route

Rails is a web application framework running on the Ruby programming language. It allows you to write less code while accomplishing more.

Rails philosophy :

* DRY

* CONVENTION OVER CONFIGURATION

Before installing you have to make sure you have:

-Ruby

-SQLite3

-Node.js

-Yarn

Installation

To install Rails use the gem install command provided by RubyGems:

gem install rails (rails — version)

Creating a Blog Application

Rails come with a number of scripts called generators that are designed to make development easier by creating everything that’s necessary to start working on a particular task. A new application generator provides the foundation of a fresh Rails app.

-rails new blog -> cd blog

The blog directory will have a number of generated files and folders that make up the structure of a Rails application. Most of the work in this tutorial will happen in the app folder, but here’s a basic rundown on the function of each of the files and folders that Rails create by default:

app/ — Contains the controllers, models, views, helpers, mailers, channels, jobs, and assets for your application. You’ll focus on this folder for the remainder of this guide.

bin/ — Contains the rails script that starts your app and can contain other scripts you use to set up, update, deploy, or run your application.

config/ — Contains configuration for your application’s routes, database, and more. This is covered in more detail in Configuring Rails Applications.

config.ru — Rack configuration for Rack-based servers used to start the application. For more information about Rack, see the Rack website.

db/ — Contains your current database schema, as well as the database migrations.

Gemfile

Gemfile.lock — These files allow you to specify what gem dependencies are needed for your Rails application. These files are used by the Bundler gem. For more information about Bundler, see the Bundler website.

lib/ — Extended modules for your application.

log/ — Application log files.

package.json — This file allows you to specify what npm dependencies are needed for your Rails application. This file is used by Yarn. For more information about Yarn, see the Yarn website.

public/ — Contains static files and compiled assets. When your app is running, this directory will be exposed as-is.

Rakefile — This file locates and loads tasks that can be run from the command line. The task definitions are defined throughout the components of Rails. Rather than changing Rakefile, you should add your own tasks by adding files to the lib/tasks directory of your application.

README.md — This is a brief instruction manual for your application. You should edit this file to tell others what your application does, how to set it up, and so on.

storage/ — Active Storage files for Disk Service. This is covered in Active Storage Overview.

test/ — Unit tests, fixtures, and other test apparatus. These are covered in Testing Rails Applications.

tmp/ — Temporary files (like cache and pid files).

vendor/ — A place for all third-party code. In a typical Rails application, this includes vendored gems.

.gitignore — This file tells git which files (or patterns) it should ignore. See GitHub — Ignoring files for more info about ignoring files.

.ruby-version — This file contains the default Ruby version.

Starting up the webserver

In the blog directory:

-rails server

- rails s

This will start up Puma a web server distributed with Rails by default. http://localhost:3000

NOTE: Changes you make in files will be automatically picked up by the server.

You may have created a database before starting up the Rails server.

- rake db:create

Using Rails console

Rails console it’s an important tool. Gives you a direct connection to your applications ecosystem and lets you perform tasks such as:

Running database queries

Running app code

Performing full CRUD tasks with the database

Allowing to switch between making permanent database changes and running in a sandbox mode to test scripts out.

To start: rails c

To close: ctrl+ d

MVC (Model-View-Controller)

The creators of Rails utilized MVC architecture. It’s a design pattern that divides the responsibilities of an app to make it easier to reason about.

Model — this is where you can be very expressive with custom algorithms that you want to utilize you also have direct access to the specific database record. The logic in the model files.

Controller — transmit date requests from the user to the model and then delivers data that is rendered in the view to the user.

View — view should not contain any programmatic logic, they should simply render what the controller sends it.

Routes are rules written in a Ruby DSL (Domain-Specific Language). Controllers are Ruby classes, and their public methods are actions. And views are templates, usually written in a mixture of HTML and Ruby.

Rails have a comprehensive routing system for both dynamic and static pages.