Master the hidden half of Ruby — from your very first method call to metaprogramming that reads like magic.
You learned method arguments on day one. So why does real Ruby — Rails, RSpec, every gem you admire — still feel like it's written in a dialect you never quite learned?
Because the day-one version stops at def greet(name). The Ruby that professionals write runs on required keywords, splats and double-splats, captured blocks, lambdas with surprising return rules, methods that build other methods, and blocks that execute inside a different object entirely. These aren't exotic corners — they're the everyday vocabulary of expressive Ruby, and almost nobody teaches them in one connected, ground-up story.
This book does. It begins where a beginner begins — passing a single value — and doesn't stop until you can read and write the advanced patterns with ease, ending with you building a small domain-specific language of your own. Every idea arrives in plain language, with a tiny example you can run and a result you can see, right there in a comment.
What you'll master
Positional, optional, and keyword arguments — and how to design signatures people actually enjoy callingThe splat and double-splat, their anonymous forms, and how to forbid keywords entirelyBlocks, yield, procs vs. lambdas, closures, and the loop-variable traps that catch everyoneCurrying, partial application, and function compositionsend, define_method, method_missing done honestly, and instance_eval / class_evalArgument forwarding — and the patterns behind Rails and RSpec, rebuilt from scratchPerformance, anti-patterns, and a capstone DSL you build yourselfWhy now, of all times. We're living through an explosion of machine-generated code. It has never been easier to produce Ruby, nor more important to truly understand it — because you can't review, trust, or steer what you can't read. This book gives you the foundations to judge anything put in front of you, whether you wrote it or a tool did.
Beginner-friendly, developer-deep. Written for modern Ruby (4.0, and it runs unchanged on the 3.x line). Every Try it exercise comes with a complete, self-checking solution in the companion code repository.
Pour something warm, open a console, and discover how much is hiding inside the most ordinary thing in the language.