Getting Started
Setting up macOS
Setting up VSCode
Setting up workspace
Installing Ruby on Rails
Introduction to the Rails Application
Rails core principles
Basics of Ruby on Rails routing
Overview of Rails Parameters
RESTful routes in Ruby on Rails
What is CRUD
Rails migration
Active Record basics
Rails Models
Project BlogWorthy - Task 1
Rails console
Adding Tasks controller
Loading behavior of Ruby on Rails
Instance variables in Rails controllers
Model validations
Project BlogWorthy - Task 2
React.js over Rails view
Setting up Shakapacker
Running server in development environment
Adding Tailwind
Setting up React environment
Bring React.js to Rails
Linting and Formatting Code
Basics of React Router Dom
Reusable components
Frontend backend separation
Moving to an API based architecture
Building and organizing APIs
Searching the Rails docs
Displaying list of tasks
Project BlogWorthy - Task 3
Adding slug to task
Optimizing slug generation process
Data validations
Adding a new task using create action
Showing notifications
Showing a task
Active Record finder methods
Updating task
Deleting task
Active Record callbacks and object life cycle
Class methods and scopes
Project BlogWorthy - Task 4
User model
Defining associations and best practices
Assigning tasks to user
Use Jbuilder to render JSON
Authentication
Adding signup feature
Adding login feature
Setting up Rake tasks
Adding logout feature
Project BlogWorthy - Task 5
Testing User model
Debugging test failures
Test coverage
Introducing Factory Bot
Authorization
Ruby initialize method
Adding comments to tasks
Avoid premature optimization in API calls
Using Enums in Rails
Marking a task as complete
Starring tasks
Project BlogWorthy - Task 6
N+1 Queries
Using counter cache to display comment counts
Order of items on Active Record models
Deep diving into unit testing
Controller tests
Setting up CircleCI
Secure gems with bundle audit
Background job processing using Sidekiq
Usage of service objects to encapsulate code
Handling idempotency when sending emails using Sidekiq
Testing Sidekiq based email delivery feature
Keep application controller clean
Using bang method
Setting up PostgreSQL database
Deploying the application on Heroku
Configure Sidekiq in Heroku
Exception handling in Ruby
How to interpret a stacktrace
Generating a PDF report
Optimizing PDF report feature
Handling cookies
Local storage and Session storage
Rails security best practices
XSS attacks
CSRF attacks
Mitigating XSS when cookies are used
Preventing CSRF attacks
Cookie vs Auth token
HSTS and Rails
PostgreSQL in depth
Configuring and connecting to a database
Debugging memory issues in Redis console
ActiveRecord Transactions in depth
Locks and testing parallel transactions
Sidekiq in Depth
Webpacker in Depth
Rails migrations in depth
Strong migrations
Loading behavior of Ruby on Rails in depth
Rails Macros and Metaprogramming
Rails naming conventions
Generic naming patterns
Rails generator and bundle commands
Rails Engines
Rails caching
Optimizing ActiveRecord Queries
Memoization
Counter culture
Carriers
Database cleaning and strategies
Rails routing in depth
Request response cycle in Rails
Dealing with errors
Mocking API calls
Debouncing and Throttling
SQL Schema Dumps
JSONB columns and ActiveRecord Store module
PostgreSQL JSONB operators
More Rails goodies
Additional reference materials