Welcome to the Ruby on Rails Back End Class!
Below is a quick outline of this course. Remember to keep pace with the
mentor groups, and don’t hesitate to ask lots of questions! Slack is the best place for your questions, and you have a Slack channel for that purpose. Get oriented on the Student Resources page. Students are expected to attend at least two Mentor Sessions a week. Sign up for mentor sessions using the Calendly links below.
If you need assistance with non-curriculum items please contact your Cohort Instructional Leader on Slack or by this email: dragonfish@codethedream.org
Course Calendar
The calendar below shows the start date of each week of the course and includes breaks and special events.
Course Sections
Week | Start Date | Due Date | Lessons |
---|---|---|---|
0 | Feb 28, 2023 | Mar 7, 2023 | Machine set-up Git-hub Cookbook AND Pre-class Information |
1 | Mar 8, 2023 | Mar 14, 2023 | Lesson 1.1 SQL Basics |
2 | Mar 15, 2023 | Mar 21, 2023 | Lesson 1.2 More SQL, Introduction to Ruby |
3 | Mar 22, 2023 | Mar 28, 2023 | Lesson 2.1 Ruby Collections, Loops, and Conditional Statements |
4 | Mar 29, 2023 | Apr 4, 2023 | Lesson 2.2 Ruby Methods, Classes, and Blocks |
5 | Apr 5, 2023 | Apr 11, 2023 | Lesson 2.3 Ruby Test First Development |
6 | Apr 12, 2023 | Apr 18, 2023 | Lesson 3.1 Rails Basics |
7 | Apr 19, 2023 | Apr 25, 2023 | Lesson 3.2 Rails Active Record Associations |
8 | Apr 26, 2023 | May 2, 2023 | Lesson 4.1 Additional Rails Topics |
9 | May 3, 2023 | May 9, 2023 | Lesson 4.2 Rails Testing with RSpec |
10 | May 10, 2023 | May 16, 2023 | Lesson 4.3 Bringing it All Together |
11 | May 17, 2023 | May 23, 2023 | Lesson 4.4 Bootstrap 4 Basics; Bootstrap in Rails |
12 | May 24, 2023 | May 30, 2023 | Lesson 5.1 Building an API, Swagger ✔ Complete only sections 5.1.1 and 5.1.2 this week |
13 | May 31, 2023 | Jun 6, 2023 | Lesson 5.1 continued Building an API, Swagger ✔ Complete only section 5.1.3 this week |
14 | Jun 7, 2023 | Jun 13, 2023 | Lesson 5.2 Calling the API Using Fetch |
15 | Jun 14, 2023 | Jun 20, 2023 | Final Project work begins Mindset Curriculum Assignment |
16 | Jun 21, 2023 | Jun 27, 2023 | Final Project work continues Mindset Curriculum Assignment |
17 | Jun 28, 2023 | Jul 4, 2023 | Final Project work completed Mindset Curriculum Assignment |
Jul 5, 2023 | Jul 7, 2023 | Final Project Presentations Two nights, Time TBD | |
— | Jul 17, 2023 | Sept 12, 2023 | PRACTICUM |
What You Will Be Learning
Rails is a widely used production grade web application framework. You will be learning to develop applications within that framework, which is based on the Ruby language. You will also learn some SQL, which is used by most back end frameworks to store and retrieve data. You will learn about
- Basic SQL operations: Select, Insert Into, Update, Delete
- Combining SQL table data using joins
- Ruby syntax, variables, conditional statements, arrays, hashes, and loops
- Ruby methods, classes, and blocks
- Ruby test driven development
- Rails simple applications using scaffolds
- The Model/View/Controller organization of functions within Rails
- Routes, and how you associate route URLs with controller methods
- REST principles and operations: GET, POST, PUT, DELETE
- Communicating with the database using the ActiveRecord Object/Relational Mapping
- How data models affect the structure of your controllers and views
- Assocations between data models: one to many, many to many.
- Views that show dynamic web pages with embedded Ruby
- Diagnosing problems and debugging
- Communicating messages to the user
- Logging
- Testing
- Styling your application using the Bootstrap framework
- How to build a back end API
- How to enable the back end API for Swagger testing/documentation
- How to call the API from Ajax
Before You Begin
Please set up your machines for Ruby and Rails development, as described Here.
Submitting Your Assignments
For each lesson, you will have one or several assignments. Each assignment is provided to you as a git repository, and a link will be provided to you for that git repository. You should have basic familiarity with git before starting this course, but if you aren’t confident in your git skills, see this Github Cookbook. For each assignment, you will do the following steps:
- Fork the repository into your own git account. The fork should be public.
- Clone your fork onto your workstation. Important: Clone your fork, not the original repository.
- Create a branch for your lesson. Commit changes to that branch periodically, and push them to github.
- When the lesson is complete and all your work has been pushed to github, open a pull request for your branch.
- Then fill out your homework assignment submission form. Include a link to your pull request. (Be sure the link is for your pull request, not your github repository.) A mentor will then review your assignment, putting comments into the pull request.
Some of the git repositories will be used for several lessons. You should create a separate branch for each lesson. Each time you will create the new branch from the branch for the previous lesson, so that your work builds on previous steps.
After your assignment has been reviewed, you can, if you like, merge it into the main branch. It is best not to do this merge until your assignment has been reviewed, as your reviewer may recommend changes. You do the merge on Github, by merging your pull request. Then, on your workstation, check out the main branch and do a git pull.
When Submitting Your Code
When you submit your code, it should be working. If you are not able to get your code working, ask for help on Slack, or bring up questions in a mentor session, or ask for a special mentor session.
Ruby code should be readable. There are many aspects to good Ruby code style, but the most important for right now is indentation! The content of blocks, methods, and classes should be indented two spaces. The end statement should line up, being indented the same number of spaces, with the statement that begins the block, method, or class. Here’s an example:
def my_method(my_array,my_boolean)
if my_boolean
my_array.each do |entry|
puts(entry)
end
else
puts("The boolean was false.")
end
end
We need proper indentation in order to be able to review your assignments. You need proper indentation to make sure your code is structured correctly.
Mentor Information
Traditional / Group Mentors
Traditional Mentors are volunteer mentors who will host one or more one-hour long group sessions weekly. Typically these sessions are question-answer format so be sure to bring your questions from covering your learning materials or working on your coding assignment to the session. To sign up for a group mentor session:
- Click this link to be taken to the Mentor Session Sheet – a Google Spreadsheet
- Find the session(s) you wish to attend for the week and list your name in that column. The document auto-saves so other than typing your name, there’s nothing else you need to do!
- By appointment mentor Calendly links are also listed in the first column of that spreadsheet. You can use those links or the links below to sign up for one on one sessions.
If you need help finding your way around the spreadsheet, watch the video below.
NOTE: This recording was for a previous class, so dates and names in the video will not match dates and names for this class!
1:1 / By Appointment Mentors
By Appointment Mentors are volunteer mentors who will help you one-on-one. If you’re unable to make a group session, or would just like to have one-on-one assistance, use the links below. To sign up for a one on one session:
- Click on the orange “Sign Up with this Mentor” button under the mentor with whom you want to meet
- This will open their Calendly page in a new window. Click on the blue circled date for the day you want to meet with them. A list of times they’re available that day will appear on the right side of the calendar. If a day does not have a blue circle, they are not available that day.
- Click on the time to the right of the calendar to select what time you want to meet with them
- Click Confirm
- Use the instructions or link in the email confirmation you receive after clicking Confirm to join your session on the day and at the time you selected