186 Linux basics [1d]
Linux command-line essentials for everyday file, process, package, SSH, and shell tasks, plus editor setup, shortcuts, permissions, and executable scripts.
187 Exception notifications [0.5d]
Exception notifications help detect application errors early, but naïve e-mail alerts can flood inboxes and repeat the same issue across servers. Sentry reduces noise by aggregating similar errors and suppressing duplicates.
190 Pagination [0.5d]
Pagination keeps large movie lists responsive by loading only a page of records instead of thousands at once. will_paginate adds page links and reduces render time.
195 Structuring CSS with the BEM pattern [4d]
BEM brings consistent, reusable CSS structure to new and legacy projects, making block-based styling easier to maintain and reuse across screens.
200 Migrations [2d]
Rails migration exercises for adding cached actor fields and backfilling existing records, with guidance on complex migrations and avoiding model usage in migrations.
205 Basic file uploads and image versions [2d]
ActiveRecord-style file uploads with image resizing, cropping, validation, caching, and forced downloads for movie posters in Rails using CarrierWave.
215 Browser automation with Capybara and Selenium WebDriver [2d]
Real-browser integration tests with Capybara and Selenium often become flaky because of driver differences, JavaScript dialogs, cookies, downloads, and browser state.
224 Advanced git [2d]
Advanced Git workflows for rewriting history, splitting commits, rebasing branches, and handling remote pushes, conflicts, and recovery after mistakes.
225 Event bubbling and delegation [1.5d]
Event bubbling and delegation reduce handler count while affecting propagation control and dynamically created elements. stopPropagation(), stopImmediatePropagation() and preventDefault() behave differently.
230 Unobtrusive JavaScript components [3d]
Reusable JavaScript components need clear scope, multiple instances, dynamic activation, and cleanup to avoid brittle page-specific behavior.
232 Partials and ViewComponent [1.5d]
Views grow. The same card, button or navigation shows up on ten screens, and soon the same twelve lines of HTML live in ten places. Rails partials are the first tool against this; ViewComponent is the second, for components that carry logic, helpers, CSS and JavaScript of their own. This card teaches you to give your views a small, readable vocabulary of components.
Important
Work on this lesson in
advisormode.
Learning goals
- You can explain how a partial exposes an API to its callers: through locals, and by accepting a bloc...
235 Cookies and Rails Sessions [1d]
Cookies and Rails sessions differ in scope, lifetime, and security properties. Signed, encrypted, and SameSite cookies shape how state survives requests and browser storage.
237 Web application security [3d]
Web application security centers on common attack vectors, Rails protections, dependency checks, and HTTPS limits for preventing XSS, CSRF, SQL injection, and session theft.
240 Authentication [3d]
User identity verification in Rails needs secure session handling and password storage; Clearance or Devise avoid custom authentication pitfalls while supporting sign-in, sign-out, and protected pages.
245 Authorization [2.5d]
Fine-grained access control in Rails can depend on role, ownership, and per-resource permissions. Consul and assignable_values help model custom authorization rules and restricted choices in forms.
247 Nested forms [2d]
Rails nested attributes keep child records in one transaction, while form helpers encode names so additions, removals, and ignored blank entries map correctly.
248 Deleting associated records [1d]
Associations need a deletion strategy when parent records disappear; :dependent and soft-delete choices affect data integrity, forms, and validations for related users and movies.
250 Form models [2.5d]
Form models separate user-facing input handling from domain models, especially for sign-up, login, and merge screens. They help manage validation and interaction-specific code without overloading ActiveRecord.
251 Our Rails stack, and why it isn't Omakase [0.5d]
Rails ships with a default menu of libraries and conventions — its creators call it "Omakase", the chef's choice. Like many companies, we don't follow that menu blindly. Over the years we have adjusted our stack to our own taste and experience. This card explains where we differ and why, so you won't be confused when a tutorial, a Rails guide or a freshly generated app looks different from our projects.
Important
Work on this lesson in
teachermode.
Learning goals
- You can explain what "Omakase" means in Rails and why a compan...
255 Parsing text with regular expressions [1d]
Regular expressions can extract structured data from simple Ruby code, including class names, superclasses, and methods, when a full parser would be overkill.
270 More Software design [2d]
Software design review topics focus on code smells, technical debt, and architecture antipatterns in existing repos such as Cards and MovieDB.
275 The HTML5 platform [1.5d]
Browser support varies for HTML, CSS, and JavaScript features; older Safari lags, and BrowserStack, feature detection, transpilation, and polyfills help keep apps working.
285 Frontend build pipelines in Rails [3d]
Rails frontend asset systems differ in bundling, fingerprinting, package support, and postprocessing; esbuild is the current preferred approach, while Sprockets and Webpacker remain relevant in older apps.
286 Code reviews [1.5d]
So far, others have reviewed your code. From now on you will also review code yourself: your colleagues' merge requests and — more and more — code that an agent wrote for you. Reviewing is a skill of its own. This lesson teaches you what to look for, how to write useful comments, and what is different about reviewing agent-generated code.
Important
Work on this lesson in
advisormode.
Learning goals
- You can explain what a code review is for: a code base that gets better over time, knowledge that spreads, bugs caught before us...