# Ruby on Rails Bootcamp

Canonical URL: <https://www.creativelive.com/classes/ruby-on-rails-bootcamp>

## Overview

In a booming tech industry, having the skills to handle both design and functionality is what makes a developer stand out. From displaying pop-up messages to storing data in a database, you will learn to handle the creation of software from start to finish, including how to launch your application live on the web for anyone to use.

The first part of the course teaches you how to leverage the power and speed of Ruby on Rails, and you will quickly see why major companies like Shopify, Groupon, X (formerly Twitter), and GitHub use it to build their services. You will then learn the fundamentals of programming using Ruby without Rails to solidify your understanding of how the back end of software works. The final sessions focus on mastering Model-View-Controller architecture so you can decide whether you want to specialize in building complex back-end systems or designing professional applications that simply work.

## What you'll learn

- How to create an application that really works
- How to set up and work with a database
- How to store and retrieve information submitted by users
- Use Model-View-Controller (MVC) architecture to keep code organized
- Principles of Software Engineering such as Convention over Configuration (CoC) and Don't Repeat Yourself (DRY)
- Make different screens based on a user's login status
- Use programming languages to reduce the amount of code you have to write
- Deploying an application live to the web

## Prerequisites

While experience with Ruby on Rails is not necessary for this course, it is recommended that you have at least some exposure to HTML, CSS, and JavaScript. Students unfamiliar with these programs should check out our selection of [coding courses in NYC](/coding-classes-nyc). 

We can provide you with a computer during class, but it is preferred that you bring your own so that you can continue working at home.

## Curriculum

### Introduction to Ruby on Rails

#### Scaffolding

- The Scaffold command
- Overview of Models, Views, and Controllers (MVC)

#### Adjusting the Templates Created by Scaffolding

- Formatting in Rails
- Working with Dynamic web pages
- Editing the text in the tab
- Redirecting the homepage URL
- Editing the CSS

#### Version Control with Git

- Initializing a repository
- Committing and Pushing changes
- Creating, switching, and deleting branches
- Merging branches

### Ruby Fundamentals

#### Ruby Data Types & Variables

- String, Integer, Float, Boolean and Nil values
- Properties of Ruby data types
- Instance variables & Local variables
- Global variables

#### Functions & Control Flow

- Built-in functions
- Creating your own functions
- Passing arguments and returning values
- If/Else and Unless Statements
- While/Until Loops

#### Ruby Data Structures

- Arrays: The Simplest Collections
- Hashes
- Enumerators
- Common Iterators

#### Classes

- Creating classes
- Inheritance
- Class Methods
- Overriding Methods

### Controllers and Views

#### Generating a Controller

- Creating a New Rails Site for Flix
- How Controller methods relate to views
- Private methods
- The params hash

#### Views

- Generating and creating Views
- When you don't need a View
- Mapping Views to controller actions and routes
- Dynamic Views
- The rails routes command

### Models & Forms

#### Models

- Generating a Model
- How Migration Files work
- Migratiing the Database
- Rolling back a migration

#### Rails Forms

- Rails forms vs HTML forms
- HTTP Overview
- Rails Form Helpers
- Rails forms: form\_for, form\_tag, and form\_with
- Connecting a form to a Model

#### Uploading Files

- Installing ActiveStorage
- Allowing users to upload images

#### Views

- Creating a View
- Adding Dynamic Data
- Rendering a Partial
- Optional Bonus: Rendering a View

### Advanced Models

#### Model Validations

- The purpose of validations
- Adding basic validations
- Preventing submission of empty forms
- Customizing validations
- Adding Error Messages

#### Model Methods

- Built-in Model methods
- Adding methods to models

#### Model Relationships

- has\_one and belongs\_to relationships
- has\_and\_belongs\_to\_many: Simple Many-to-Many Relationships
- has\_many, through: Advanced Many-to-Many Relationships with Additional Metadata
- Polymorphic Relationships

#### Other Important Relationships in Rails

- Delegates: Sharing Methods Between Related Objects
- Self-Joins: Relationships Between Instances of the Same Model

### ActiveRecord Associations

#### Model Relationships

- Has\_one and belongs\_to relationships
- Has\_many relationships
- Joining models together via the controller
- Writing Simple Tests Using Fixtures
- Optional Bonus: Writing Tests Using Embedded Ruby Code
- Additional Bonus: Helpers

### Integrating Front-end Code

#### Rails Asset Pipeline

- What the Asset Pipeline does
- Adding CSS
- Adding JavaScript
- Conditional CSS and JavaScript files

### Launching an Application

#### Preparation

- Managing Ruby environments
- Locking Gem versions
- Environment variables

#### Amazon Web Services

- Setting up an AWS account
- Where to store credentials
- Remote Asset Storage with Amazon S3

#### Heroku

- Heroku Account Setup
- Installing Heroku Toolbelt
- How Heroku works
- Types of Dynos
- Deploying your application

## FAQ

### Do I need to bring anything to the class?

We provide a Mac with a coding editor for use during the course. However, we recommended that attendees bring and work on their own Mac so that they can continue practicing at home.

### Why does this class require a Mac?

MacOS is based on Unix, which more closely matches the Unix or Linux web servers you will typically be deploying to. Getting Ruby on Rails running on Windows is more difficult and sometimes gems won’t work or require extra work to get the running correctly. Using Macs in class lets us keep things easier so we spend more time learning Rails and less time troubleshooting Windows issues.

Most of the code and concepts you’ll learn in class would be applicable to developing on Windows, so after class you could get Rails running on your Windows computer if you really want to.

## Pricing

**Tuition:** $2495

Payment options: pay-as-you-go installments.
