DHH · 2025-07-12 · source ↗ · whole document (12)
Доктрина Rails: девять принципов
Программисты любят коробку с конструктором — это и делает их программистами. Задача — направить этот инстинкт на решения, которые действительно важны.
## 3. Меню — omakase
Всё, что не так с экосистемой JavaScript: никто не отвечает за меню. Двадцать пять способов сделать контроллер, столько же — работать с базой, и все используют одно и то же не дольше пяти минут. «No retained wisdom. We build up no durable skills».
## 4. Монолит и «не распределяй»
> «When you apply that pattern to a team of 20 programmers working on a code base of half a million lines of code, you're an idiot. You just don't need to turn method invocations into network calls. It is the first rule of distributed programming. Do not distribute your programming.» — [2:06:51](https://youtu.be/vagyIcmIGOQ?t=7611)
Basecamp и HEY — по ~100 000 строк Ruby. Basecamp — примерно 420 экранов. HEY при запуске отправляла в браузер 40 килобайт JavaScript; Gmail — 28 мегабайт несжатого. Та же задача.
Разделение фронтенда и бэкенда он называет «одним из великих преступлений против веб-разработки».
## 5. Ни одной парадигмы
Ruby в ядре объектный, но заимствует функциональное: цепочки блоков, неизменяемые строки. Rails — ремикс: он не придумывал ни ActiveRecord, ни MVC.
## 6. Возвышай красивый код
`class Project < ApplicationRecord; belongs_to:account; has_many:participants` — Лекс прочитал это вслух, ничего не меняя. Хайку.
ActiveRecord — «жемчужина короны». Паттерн из книги Фаулера «Patterns of Enterprise Application Architecture» (2001), одной из немногих, которые он читал много раз. Суть: таблицы становятся классами, строки — объектами. Не прячет SQL, а убирает из него утомительное. SQL знать надо — он пережил десятилетие NoSQL и остался.