# Ruby on Rails Bootcamp

Canonical URL: <https://www.nobledesktop.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'll 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’ll quickly see why big companies like Shopify, Groupon, X (formerly known as Twitter), and GitHub use it to build their services. You’ll then learn the fundamentals of programming using the Ruby language without Rails to solidify your understanding of how the back-end of software works. The final sessions of the class will be focused on mastering Model-View-Controller architecture so that you can decide for yourself whether you want to specialize in creating 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

## Instructors

### Dan Rodney — School Director, Instructor, & Senior Course Developer

Dan Rodney has been a designer and web developer for over 20 years, creating coursework and leading innovative training initiatives at Noble Desktop. He teaches courses covering Figma, HTML & CSS, Adobe Photoshop, InDesign, Illustrator, and Power BI. Dan has also been at the forefront of integrating AI into design and business workflows, spearheading Noble Desktop’s latest AI course offerings. In addition to teaching and curriculum development, he writes custom scripts for InDesign (Make Book Jacket, Proper Fraction Pro, and more) and works with automation and AI-driven tools in his free time. You can find Dan on X (Twitter), LinkedIn, Facebook, and at danrodney.com.

Learn more about [Dan Rodney's](/dan-rodney) background and expertise.

### Brian McClain — Program Director & Senior Instructor

Brian McClain is an experienced instructor, curriculum developer, and web developer. Brian served as Director for a coding bootcamp before joining Noble Desktop in 2022, where he is now a lead instructor and course developer for both JavaScript and Python. He teaches Web Development, JavaScript, Python for Data Science, Machine Learning, and AI. Prior to Noble, he taught Python Data Science and Machine Learning as an Adjunct Professor of Computer Science at Westchester County College.

Brian is also an active industry professional in the field of generative AI app development. His website and iOS app, Artmink, provides appraisals of art and antiques from user-uploaded images.

### Colin Jaffe — Instructor

Colin Jaffe is a programmer, writer, and teacher with a passion for creative code, customizable computing environments, and simple puns. He loves teaching code, from the fundamentals of algorithmic thinking to the business logic and user flow of application building—he particularly enjoys teaching JavaScript, Python, API design, and front-end frameworks.

Colin has taught code to a diverse group of students since learning to code himself, including young men of color at All-Star Code, elementary school kids at The Coding Space, and marginalized groups at Pursuit.

Colin lives in Brooklyn with his wife, two kids, and many intricate board games.

### Greyson Frazier — Instructor

Greyson Frazier is a Software Engineer with over a decade of experience building applications using JavaScript, React, Node.js, Angular, TypeScript, Java, AWS, Tailwind, and Next.js. He holds a Bachelor of Science in Computer Science from Rutgers University and previously worked as a software engineer at Capital One, where he developed scalable, enterprise-level applications.

Greyson is an experienced instructor who has previously taught at Code Immersives and Coding Temple. He is passionate about creating hands-on, supportive learning environments and has developed curriculum designed to make complex technical concepts approachable and practical for students.

Based in Bloomfield, NJ, Greyson stays current with evolving web development frameworks, particularly React and Next.js, and is dedicated to helping students develop the skills needed to succeed in today’s technology landscape.

### Chett Tiller — Instructor

Chett Tiller is an experienced web developer who has brought his expertise with React, Node, and full-stack development to multiple companies over his career. After transitioning six years ago to an instructor, first at the Flatiron School and now at Noble Desktop, Chett has brought his passion for full-stack engineering to hundreds of students and guided them on their journeys from fledgling developers to their first job offers.

When Chett isn't busy teaching students or writing curriculum, he builds online products for local volunteer organizations and dabbles in game development.

## 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.
