DHH · 2025-07-12 · source ↗ · whole document (12)
Доктрина Rails: девять принципов
## 2. Конвенция вместо конфигурации
Родилась из Java-фреймворков с тысячами строк XML: как называть внешний ключ — `post_id`, `postId`, `PID`? Это не имеет значения. Надо просто выбрать.
> «I'm not just handing you a box of fucking Legos and asking you to build the Millennium Falcon. I'm giving you a finished toy.» — [2:02:43](https://youtu.be/vagyIcmIGOQ?t=7363)
Программисты любят коробку с конструктором — это и делает их программистами. Задача — направить этот инстинкт на решения, которые действительно важны.
## 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` — Лекс прочитал это вслух, ничего не меняя. Хайку.