Ruby, PostgreSQL и Rails — мощный стек для разработки, но даже опытные разработчики сталкиваются с тонкостями: от метапрограммирования в Ruby до оптимизации запросов в PostgreSQL. В этой статье собраны ключевые темы — от основ ORM до архитектурных решений и блокировок в базе данных.
🧠 Ruby
- lambda, proc, yield и return: кто куда уходит
- method_missing и respond_to_missing?
- Метапрограммирование в Ruby: define_method и друзья
- send, send, public_send — и когда всё рушится
- @, @@ и $ — переменные, в которых легко потеряться
🔬 Ruby внутри
- Что такое singleton_class и class « self
- GIL, MJIT, YJIT, RJIT и почему Ruby всё ещё не летает
- Ractor: попытка Ruby в многопоточность
- refine и BasicObject — странности ядра
🗄 ActiveRecord
- joins, includes и preload — кто есть кто
- pluck(:id) или select(:id)? Поговорим про плохие практики
- Почему пропадают поля при select(“…”)
- scopes, merge, default_scope — и как не взорваться
- select, group, having, joins — и когда всё ломается
- Нестабильные include + where — что с этим делать
💥 ORM и боль
- Транзакции и подводные камни в PostgreSQL
- Блокировки в PostgreSQL: shared, exclusive, advisory
- Пессимистичная vs оптимистичная блокировка
- 10 ошибок ORM, о которых вы пожалеете
- EXPLAIN ANALYZE: читаем, не паникуем
- Виды JOIN и почему всё тормозит
- Почему staging-база должна быть огромной
- Новая миграция, старые грабли: без strategy!
- Индексы в PostgreSQL и в ActiveRecord
- JSONB и запросы вида metadata @> ?
- Arel — магия или ад?