Code Explainers
Ruby code explainers
ruby
require "csv" class SalesReport def initialize(path)
Aggregating CSV sales data in Ruby
data-aggregation
memoization
group_by
Intermediate
6 steps
ruby
module DurationFormatter UNITS = [ ['week', 604_800], ['day', 86_400],
Turning seconds into human-readable durations in Ruby
greedy-decomposition
modular-arithmetic
formatting
Intermediate
7 steps
ruby
class Comment < ApplicationRecord belongs_to :post belongs_to :author, class_name: "User"
Live-updating comments with Turbo in Rails
turbo-streams
callbacks
associations
Intermediate
8 steps
ruby
require 'json' require 'set' class SensitiveScrubber
Recursively scrubbing secrets from JSON
recursion
data-masking
pattern-matching
Intermediate
7 steps
ruby
class ReportBatcher BATCH_SIZE = 500 def initialize(account)
Batching monthly email summaries in Rails
batching
service-object
background-jobs
Intermediate
7 steps
ruby
class Comment < ApplicationRecord belongs_to :commentable, polymorphic: true, counter_cache: true belongs_to :author, class_name: "User"
How polymorphic comments work in Rails
polymorphic-association
concerns
counter-cache
Intermediate
8 steps
ruby
class SessionsController < ApplicationController MAX_ATTEMPTS = 5 THROTTLE_WINDOW = 15.minutes
Throttling failed logins in Rails
rate-limiting
authentication
caching
Intermediate
7 steps
ruby
class ProductsController < ApplicationController def index @products = Product .includes(:category, :brand)
Building a safe filterable product index in Rails
query objects
scopes
strong parameters
Intermediate
8 steps
ruby
module LogParser class AccessLogStreamer SEVERITY_PATTERN = /\b(ERROR|WARN|FATAL)\b/
Streaming log lines with a Ruby enumerator
enumerators
lazy-iteration
regex-matching
Intermediate
6 steps
ruby
class HostnameValidator < ActiveModel::EachValidator MAX_LENGTH = 253 LABEL = /\A(?!-)[a-z0-9-]{1,63}(?<!-)\z/i
Writing a custom hostname validator in Rails
validation
custom validator
regex
Intermediate
8 steps
ruby
class PaymentsController < ApplicationController before_action :require_idempotency_key def create
Idempotent payment creation in Rails
idempotency
transactions
race-conditions
Advanced
10 steps
ruby
class Survey < ApplicationRecord has_many :questions, dependent: :destroy has_many :respondents, dependent: :nullify
Nested survey forms in Rails
nested-attributes
validations
associations
Intermediate
9 steps
ruby
class OrderConfirmationJob < ApplicationJob queue_as :mailers retry_on Net::OpenTimeout, wait: :polynomially_longer, attempts: 5
Resilient background jobs in Rails
background-jobs
retries
idempotency
Intermediate
8 steps
ruby
module SoftDeletable extend ActiveSupport::Concern included do
How a soft-delete concern works in Rails
concerns
soft-delete
scopes
Intermediate
8 steps
ruby
class Post < ApplicationRecord before_validation :generate_slug, on: :create validates :slug, presence: true, uniqueness: true
How a Rails model builds unique slugs
slugs
callbacks
validations
Intermediate
7 steps
ruby
module TextAnalysis module_function WORD_PATTERN = /[\p{Alpha}']+/
Building a word-frequency analyzer in Ruby
text processing
regex
enumerable
Intermediate
8 steps
ruby
module Fibonacci CACHE = Hash.new do |cache, n| cache[n] = cache[n - 1] + cache[n - 2] end
Memoizing Fibonacci with a Hash default block
memoization
recursion
hash-default
Intermediate
5 steps
ruby
class EventEmitter def initialize @listeners = Hash.new { |hash, key| hash[key] = [] } end
Building an EventEmitter in Ruby
pub-sub
closures
callbacks
Intermediate
7 steps