Ruby on Rails
Check this first
Please review this Ruby on Rails course first and try to understand if you have any gaps in your knowledge you need to fill in.
Senior developer expectations
This is a non-exhaustive list but outlines some key areas a senior Ruby on Rails developer should have work experience in or have a strong understanding of:
- Having a good understanding of Ruby. Understand the difference between what's part of Ruby on Rails and what is part of Ruby.
- Know how to write Ruby code without rails
- Recognize and understand the differences between a
block
,lambda
, andproc
- Different types of variables: local, instance, class, global
- C optimizations for certain methods
- Understand how Rails is a collection of components/gems that work together:
- ActionController
- ActionView
- ActiveModel
- ActiveRecord
- ActionCable
- Requests/response cycle. What happens behind the scenes when a request is sent: Browser, Routing, Controller, Model, Database
- RESTful routes. https://www.theodinproject.com/lessons/ruby-on-rails-a-railsy-web-refresher
- Testing Rails Applications
- MiniTest vs RSpec
- Factories with factory_bot
- Database migrations
- Why are they useful when working on a team with multiple developers?
- How to perform a Rails version upgrade and Ruby/Rails compatibility matrix
- I18n and conventions
- Polymorphic associations, Single Table Inheritance (STI), and Delegated Types
- Naming conventions:
- filenames: always go in lowercase letters and words separated by underscore
- variables: lowercase letters and words separated by underscore
- classes and modules: PascalCase and no separator between words
- database tables: plural names with lowercase letters and words separated by underscore
- model: singular names with PascalCase
- controller: names in plural with PascalCase
- How to implement caching in Rails
- Debugging
- Benchmarking
- Find bottlenecks
- Routing
- Storing assets: ActiveStorage, Carrierwave
- Skinny controllers
- ActiveRecord callbacks
- ActionController filters
- Asset pipeline
- Hotwire: Turbo, Stimulus, Strada
- Basic metaprogramming in Rails
- Filtering elements in the database vs filtering them in memory
- Counter caches
- Background jobs and understand their differences:
- Rails API mode
- Authentication & Authorization in Rails:
- How a Rails app is typically organized. When does a JS file go to
javascript
and when to thevendor
folder? What does thepublic
folder store? - How to create a gem
- Webservers for Ruby on Rails
- Nginx / Passenger
- Puma
- Unicorn
- Thin
- PDF generation
- PDFKit
- Prawn
- How to handle payments
- Understand how payment webhooks work
- ActiveMerchant
- Eager loading and N+1 queries
- Bullet gem
- Design patterns in Rails
- Service objects
- Value objects
- Form objects
- Query objects
- View objects (Serializer / Presenter)
- Policy objects
- Decorators
- Scaffolding and when it's useful
- What does convention over configuration mean? How is it used in Rails?
- Views templating languages
- ERB
- HAML
- How development, testing, and production environments differ from each other
- How Model View Controller (MVC) works in Rails
- Model (ActiveRecord)
- View (ActionView)
- Controller (ActionController)
- Routing
- ActionCable
- Advanced usage of the Rails console