0: Знаете, че, самое смешное? Я просто, я когда думал, вот у нас начнётся этот подкаст, я знал, что я сейчас более скептичен стал, да, и вот хочу рассказать, как на самом деле, но не знал, что настолько я просто боялся, что немножко могу перегнуть, потому что мне не хочется
1: Пока говорить людям, что рельсы это там плохо, что это не нужно и так далее. Ну, хочется, с 1 стороны, реальность показать, а с другой стороны, все-таки это классная штука. То есть, если мы берём вот этот в южный слой, который интегрирован, он, конечно, очень крутой, то есть вы действительно стандартные вещи можете делать быстрее, чем где-либо. Это абсолютная
2: Правда, Кирилл Макевнин сооснователь онлайн школы программирования хекслет, разработчик с почти двадцатилетним стажем и ambassador организованного программирования и автор одноимённых YouTube и telegram каналов.
3: Кирилл работал с рубин, рейлс ещё в коммерческой разработке вокруг рейлс строился и сам хекслет, и его инженерный опыт, плюс у него есть редкое умение говорить про рельсы не как фанат, которому все нравится, и не как хейтер, для которого рельсы умерли, а как человек, который
4: Хорошо понимает и силу фреймворка, и его ограничения. В этом эпизоде подлодки. Мы поговорим о том, почему фреймворк рубио рейлс много раз хоронили, но он все ещё живёт, развивается и продолжает раздражать одних разработчиков и влюблять в себя других. Обсудим, почему рейлс так.
5: Хорошо попал в эпоху стартапов, но потом разошёлся с индустрией, которая ушла в big tech, микросервисы, хайлоуд и сложный фронтент разберём, в чем настоящая сила рельсов, конвеншн ове, конфигурейшн, скорость разработки эктив, рекорд миграции, готовая инфраструктура вокруг.
6: Типовых веб продуктов и ощущение, что 1 человек способен сделать предложение от и до, поговорим о фронтенде в рейлс, серверной шаблонизации, hotwire, инерции и том, почему попытка не писать дживаки для одних выглядит спасением, а для других тупиковой веткой.
7: И, конечно, обсудим главное, кому рейлс вообще нужен сегодня, почему его рано списывать, когда он честно даёт огромную скорость, а где лучше уже выбрать другой стек, подводя черту, если вы когда-то писали на рейлс, и вам интересно узнать, что с ним стало в 2026 году.
8: Если вы никогда не писали на рейлс, но хотите узнать, почему вокруг него столько легенд или даже если вам просто интересно, как 1 фреймворк повлиял на разработку больше, чем кажется. Смотрите выпуск дальше.
9: 1 вопрос, Кирилл, сразу хотелось бы спросить, я расскажу как бы собственную историю. Я познакомился с рубин рейлс, когда вот ещё вот мы вместе как раз с Женей работали в 1 компании, называлась рамблер диджитал солюшнс.
10: Вот, и там кучу разных медиапроектов писали на рельсах. Вот это был 2015 год. Тогда это был прям вот рассвет. Тогда казалось, что там кучу можно всего на этом написать с тех пор. Вот я лично за вот
11: Свою карьеру слышал про рельсы очень мало. Раз. Опять же, если поспрашивать, то кажется, что все говорят, что рельсы в целом умерли и как раз там живут, ну, благодаря вот шипиха жениному и ещё там, нескольким компаниям, которые продолжают его развивать активность.
12: Разработчиков комьюнити упало так ли это или на самом деле это просто со стороны так кажется и нужно копнуть глубже, что ситуация просто перешла на какую-то стабильность. Сначала хотелось бы сказать жене спасибо за шопифай.
13: Пожалуйста, благодаря благодаря тебе, да, оно все держится. Ну да, конечно, оно, естественно, немножко сместилось. Есть 1000000 факторов. Во первых, слово умер, плохое слово, потому что что-то умирает, но это крайне редко происходит, чтобы прям умирал.
14: Вот pearl можем ли мы сказать, что он умер, учитывая, что весь букинг на нём, да и там до сих пор его много и они его тащат. Мне кажется, с рельсой примерно такая же история происходит и с руби прям небольшой вход, небольшой момент рельса, как сейчас вот уже, знаешь, в.
15: Retrospective. Мы можем сказать, что есть такое понятие. Даже сейчас часто говорят, фулстек, а когда проект 1 человека есть прям на английском понятии, я его забыл. Вот рельса это такая штука, которая позволяет человеку сделать от и до, и я, когда думал,
16: Вот, если я приду на подкаст, как я это, с чем это сравню? Я скажу так, что из всех технологий, которые, наверное, есть вот на уровне программистов, а не там, вот всех остальных, он, наверное, ближе всех к, знаете, понятию цмсок. Вот это, конечно же, фреймворк, это, конечно, штука для
17: Программистов, но он вот позволяет вам закрыть фронт, закрыть бэк, закрыть деплой, закрыть релиз, очень много включённых, как бы это better инклуде, это называется. И вот если вы такой соло, интерпренер или чувак, который хотите для себя быстро типовой веб проект двигать вперёд
18: Это достаточно хорошее решение, но, как вы понимаете, сейчас это нишевая штука, как часто бывает у вас, в зависимости от того, какой этап жизни, развития там экосисте, ну, мира, скажем так, у вас вдруг одни и те же штуки, они где-то выстреливают, а где-то становятся, ну, не очень.
19: Очень актуальными. Сейчас это огромный рынок, там большая часть разработчиков и там нужны немножко другие решения, потому что, как правило, там все является сервисами, они много взаимодействуют там внутри. Вообще не факт, что у вас http. И в итоге получается, что рельса, как сначала некий
20: Hype типа вообще все на этом делаем, она сузилась до того момента, с какого она начиналась специально вчера смотрел тренды, статистику с 20 года, он там стабильно на каком-то вот уровне, соответствующем наверное, количеству появляемом новых проектов, то есть есть шопифай есть.
21: Трайп есть, ну, тот же самый дичей. Короче, есть какие-то крупные компании, которые туда много вносят, их понятное количество, их там не так много, как в джесе, там, в джаве, где угодно сильно меньше, но они есть. И вот они как бы это тянут и новые проекты появляются, поэтому
22: В целом, он действительно ушёл в некую свою нишу, с которой очень многие программисты сейчас не пересекаются, или им кажется, что её не существует. Ну, смотри, в октябре 25 вышла вот последняя мажорная версия, типа 8, 1. Это можно назвать как бы
23: Некоторым как бы грядущим камбэком вообще рельсов, или это просто, ну вот они, назовём так доупаковать тем, чего у них раньше не было. А вот это сильно другая история. То как разрабатываются рельсы, сколько людей
24: Там коммитят и как они развиваются, это не тоже самое, как его используют. Вот в целом в мире, насколько это глобально, если посмотреть на то, сколько коммитят в рельсу каждый день. Ой, я вам скажу мало какие фреймворки и экосистемы могут похвастаться таким объёмом, контрибьют.
25: И таким количеством кода, которые туда вливаются. То есть, когда ты говоришь про это, звучит скорее так, что, типа они ничего, ничего не делали. И вот такие смогли родить новую версию не рельса, выходит очень стабильно. То есть там раз в полгода бам, новая версия novaia versiia, и количество изменений какое-то там
26: Космическая, ну там, типа, из серии выходит новая версия. Они говорят, в этот раз было сотни там контрибьюторов или там 1000 контрибьюторов. Это очень, очень большая история. И если посмотреть на то, какие вещи внедряются, они довольно крутые. То есть многие вещи идут до сих пор. Короче, вот.
27: Если брать какие-то конкретные аспекты с точки зрения разработки рельса сильно впереди каких-то фреймворков, при том, что, конечно же, она когда-то, вы помните, принесла вообще в целом много всего в этот мир и для фронтенда, и для бэкенда. И это так, как бы распространилось. Оо, есть многие, кстати, современные разработчики, они ж даже не знают, чт.
28: Из рельсы или из руби мира вышло то, что они там привыкли использовать в своих экосистемах. Но так всегда происходит, оно всегда уходит, так что развитие идёт. Мы потом поговорим почему-то развитие, которое идёт. Оно немножко теперь такое своеобразное. И почему, собственно, наверное,
29: Стоит ожидать того, что рельса сможет что-то захватить. То есть она вот осталась нишевой. И если раньше, то, что она делала, как бы супер соответствовало тому, куда идёт вся индустрия, то знаете, какой разрыв произошёл? Разрыв произошёл в тот момент, когда фронтенд начал отделяться, и когда пошли вот эти сервисные
30: Всякие истории, БИК техи, вот с крупными штуками, где там и статическая типизация нужна, и у вас там апишечки много разной всякой. Вот в этот момент стало понятно, что рельса идёт неким своим путём, который не соответствует вот всему этому добру. Ну и подходит только
31: Для неё интерпрайза. Давай так скажем. А тут можно тогда сразу вопрос на мнение, даже на твоё. Запрос у меня есть. Получается, по крайней мере, из того, что ты сказал, у меня складывается такая картинка, что вот был бум стартапов, там в 2006 рельсы туда залетели очень хорошо, как инструмент, который к этому всем
32: Подходит, потом начался бум биг Техов и мне кажется вот вот этот хайп на консолидация рынка на хайлоу не на самом деле я немножко про другое я знаешь когда было очень много фокуса на highload на распределённые системы на там много много много Девяток про.
33: Которые сейчас все смеются, там сколько Девяток сейчас у гитхаба. Это уже, кажется, не тренд. Всем пофиг, можно все ломать. И, короче, все такие вот нам нужно распределённые микросервисы, чтобы это быстро было, чтобы это было очень перфоманс, чтобы большая команда, чтобы эта огромная компания с десятками маленьких команд могла
34: Поэтому просто нарративной, как будто бы весь фокус индустрии ушёл туда. Давайте смотреть, как делать супер сложные штуки, которые делает там твиттер, фейсбук, кто-то ещё и потом как бы сложно вернуть фокус обратно. Хотя кажется, что сейчас на самом деле обратно должен быть интерес.
35: К solo принесту вот этому, потому что теперь любой может взять яишку и ему язык, который на самом деле быстрее всего поможет быстро че то запустить. Ну это может быть тот самый руби на рельсах, но из за того, что очень долго фокус был не туда, его сейчас сложно вернуть обратно. И короче, нарратива история, норативная игра проигран.
36: Проиграно и там сильно больше причин во первых нужна многим асинхронность, да и у тебя скорость производительность каких-нибудь гошных или на ноде решений оно просто там несопоставимо понятное дело, зависит от того у тебя cpu.
37: Там ао банды, но в любом случае это несопоставимо. Во вторых, у рельсы, у рельсы есть ещё 1 особенность, которую вот сейчас многие попеняют, даже вот внутри рельсового комьюнити народ разделился. Дело в том, это сейчас современным разработчикам надо рассказывать, как некое, знаешь, там, типа, вот были времён
38: Когда ты говоришь людям серверная шаблонизация в современном мире, то есть сейчас это все как воспринимают, есть эссар и значит мы свои там реакторский компоненты или ещё что-то на сервере. Но вообще то не так было у вас вообще вэб какой был у вас вэб всегда был, что фронтент это backend, то есть у вас, грубо говоря, штмл.
39: Там вот это все, оно рендерится на бэкенде шаблонизаторами внутри вашего фреймворка, даже собственно php, собственно глобально это шаблонизатор, который стал языком программирования и до сих пор, кстати многие такие, а че с этого шаблонизатора взять? Хотя на самом деле, как язык, ну серьёз?
40: Штука уже когда, помните, как раз 15 примерно год, это до этого были спрокетс, которые были придуманы в рельсе, и это были первые сборщики вообще фронтенда. То есть рельса, тогда и кофе Скрит, помните, взлетел. То есть она, короче, очень много миру дала. И фронтенд на рельсе это было просто вот на 5 Шагов.
41: Впереди всех остальных там не пахло таким. И вдруг появляется вебпак, появляется вот эта вся система там модулей и так далее, которая там немножко, все это хачно, не нативное, но зато все это работает. У вас в 13 году появился реакт, он там медленно, медленно, потом бум, вот это понеслос.
42: И получается, что большая часть рельсы, которая связана с view хелперами, с, ну, понимаете, там лейаут рендеринг, вот шаблоны, подстановку туда. Короче, это целая большая подсистема, которая до сих пор в большинстве фреймворков, если и есть очень кусо, сделана та,
43: В рельсе, там над этим работали всегда и до сих пор. И, собственно, вот эта концепция, что типа, я как программист не должен ходить на фронтенд, у меня есть все на бэке, я все делаю на бэке, она в рельсе продолжилась, как вот генеральная красная линия, если вы помните hotwire, турбо, всякие
44: И на базе которого потом инерцию сделали и перетащили тоже во многие другие фреймворки. Короче, даже сейчас, если вы смотрите на рельсу, все её движение идёт в том, чтобы не отказаться от этого, давайте поставим вид и цепляйте там свой view рельсу. Ой, господи, реак, че у вас там светл?
45: Так далее, это опционально и то там нужны сторонние. Либо потому что из коробки этого нет. В отличие от какого-нибудь ларавеля, где наоборот, они решили, что все хорош, нормально, все должно быть и скорее всего он поэтому растёт больше в рельсе наоборот. Давайте ещё дальше идти сами. Нам не нужны сборщики, у нас своя система.
46: Упаковки и доставки, причём она такая, что там вообще не происходит сборки. Я даже её особо не Копал. У нас, значит, в бэкенде есть свой собственный фреймворк. Если надо стимулус, если надо какой-то кастом делать, экосистема ещё больше внутри.
47: Себя как бы закрылась и для тех ребят которые вот в ней оно типа нормально, но опять же поэтому все равно меньше документации, меньше вопросов на такой flow хуже работает иишка, хотя я думаю что со мной не все согласятся и отсутствие вот этого движения как бы в сторону общепризнанного фронт.
48: И вот этот ещё 1 водораздел, который как бы даже внутри рельсового комьюнити поделил людей на тех, кто продолжает вот писаться кипятком от того, куда идут рельсы, идти с ними. И тех, типа меня, кто такие, блин, ну вот здесь я с рельсой уже нет, поэтому у нас, например, вся эта
49: Часть рельсовой отрублена и там везде подключена ну просто нормальный react, нормальный вид и нормальные вот фронтендовый штучки, которые генерятся иишкой только в путь у тебя тайп скрипт и ты как бы счастлив а ты не разбирался почему как бы люди которые стоят?
50: За рубин рейлс до сих пор вот не выбрали что-то 1 из хот ваера инерции и всего остального, потому что, ну, казалось бы, так напрашивается же, наоборот, выбрали, наоборот выбрали. То есть вот если дитё ещё посмотр,
51: Вот, он выбрал путь, который называется no bill. То есть он все время это подчёркивает, он все время показывает это видео, он все время это рассказывает. Смотрите, мы не пишем джс, смотрите, как работает плавно. Смотрите, как работает быстро, мы не пишем джс, у нас там всякие, короче, фактически это hotwire, он там состоит из каких-то
52: Элементов там есть джис, но это типа ты не видишь, а если тебе надо какую-то динамическую штуку, вот они там напридумали своих примитивов, там специальные в шаблонизаторе как бы размёточка, которая позволяет куски в разные места там качать подставлять. Как только custom выходит, вам надо пихать их
53: Собственные вот эти вот решения джисов кие, которые, естественно, никто не использует в этом мире, кроме них, вы ни с чем его подружить не можете. У вас просто вы не можете использовать какое стандартное решение. Я в конечном итоге плюнул, как раз там познакомился с инерцией и понял, что вот это такой вот для случая рельсы.
54: Классная штука. То есть вы, как бы, с 1 стороны продолжаете писать в стиле рельсы, а с другой стороны, ваши шаблоны просто меняются на, ну, реакт в моём случае, а передача данных идёт без апишки, без роутинга клиентского. То есть, чтобы это не выглядело как прям полноценный спа, а полноценный спа на
55: На самом деле очень сильно. Значимость рельсы понижает именно по той причине, что я вам говорил то, что рельса очень круто делает серверную шаблонизацию. Если вы от этого отказываетесь, 50% фреймворка и его плюшек, его кайфа уходит, и тогда начинают появляться сомнения. А нахер она мне нужна? Там есть причин.
56: Почему она может быть нужна, но вот сомнения уже вот на этом этапе появляются. Я где-то читал, что как раз может быть не нужен просто single пей аппликейшн, но при этом люди уже пишут, например, на рельсах, и в итоге это даже особо не вычленить оттуда. Ну,
57: Если на рельсе вот следующий шаг хороший, это инерция, это сейчас действительно набирает оборот. Но самое смешное, что оно набирает оборот против не то чтобы воли, но против как бы идеи движения дичей, который, собственно, рельсу толкает в сторону больше хотвайера, меньше джесса.
58: Раз начали про hot wire, давай вот тут вот мы закончим, а вот где на твой взгляд, вот та назовём это так, ватерлиния, между тем, где действительно это классно, мало джиэса удобно писать и где уже просто
59: Нужно брать и через инерцию подключать отдельный фронтент. Ну, через инерцию, опять же, не все. Некоторые думают, что это фреймворк, да, это просто клей, который подмену делает, что у вас реактовских, шаблоны выглядят как серверные шаблоны. То есть у вас нету там, что вы по апишке ходите в рельсу, ну вот там
60: Из контроллера напрямую в компонент магическим образом данные попадают. Знаешь, моё мнение изменилось по этому поводу. Вот когда оно только вышло, это не только у меня так было многие. Прям вау класс. Смотрите, какая технология. Джес, писать не надо, но вот мне достаточно было чуть чуть с этим поработать. И более того, и на хексит это даже местам
61: Было внедрено. Там появляются сразу места, где надо че то сделать. Чуть больше ты не можешь использовать ни 1 готового компонента. Вы же представляете себе, что такое экосистема. Реактор это столько всего, особенно когда они на хуки перешли. Вы любую проблему можете решить вот так вот по щелчку. Это, например,
62: А вот я стал в каком-то смысле фанатом этот компонент лабери называется мантин. Это готовая система не просто там цсс классов, как tale, винт или там бутстрап, это у вас прям уже высокоуровневые компоненты, которые там логикой обладают, из них можно, там дата грид.
63: Представляете, да? Сколько там логики, чтобы там сортировки всякие делать, фильтрации и так далее. Это очень умная большая система. И вот серверная вот эта вся фигня, и вот эти вот все кастомные штуки, они с этим, ну никак не соединяются вообще. То есть тогда получается какое-то страдание, и поэтому для меня в какой-то момент стало очевидно.
64: Особенно там ттс со статической типизацией, особенно сейчас иишка, которая все ещё классно это обрабатывает, и развитие Вита, там, ттс го. Ну, короче, вот все, все, все, все это вместе. Так что я не сказал бы, что считаю, hotwire имеет смысл использовать. То есть это просто плохо на твой взгляд.
65: Это не то, что плохо, это просто тупиковая ветка, это нормально, что у вас инженерия развивается вот в разных направлениях. Просто я считаю, что hotwire будущего не имеет, это тупиковая ветка, много вот этих вот минусов изоляции. То есть вы просто страдать будете. То есть можно развивать эту экосистему, она может стать очень крутой, очень развито.
66: Но вы представляете, сколько туда вкладывать надо, чтобы все это было, чтобы компонентные библиотечки начали писать, чтобы под это развитие какое-то шло. Оно, конечно, появляется местами, но это видно, там полтора колхозника делают, и через месяц это уже заброшено. Я просто когда про это пытаюсь думать, я просто понимаю, что если т.
67: Принял это решение и стал использовать, то ты в заложниках, во первых, языка конкретного, во вторых, конкретного фреймворка. И в третьих, взглядов на то, как этот конкретный фреймворк должен поддерживать там, не знаю, условно, новые фичи браузера и так далее, и ты становишься зависим.
68: По всем фронтам. То есть ты не можешь в какой-то момент переписать бэк и оставить фронт, или переписать фронт и оставить бэк. Точнее можешь, но это будет супер болезненно, как будто бы там много, много разных причин, почему это не стоит делать. Все. Вот есть ттс, есть реакт и хорошо, и экосистема гигантская экосистема.
69: То есть, если бы вот ты сейчас проектировал идеальный вот фронтент путь для рельсов, то какой бы он был подключаем вид, там есть под эта фигня, которая его подрубает, он не из коробки. Ну, это легко делается, и все. А дальше у тебя 2 варианта.
70: Либо ты можешь идти по пути инерции, либо ты можешь идти по пути апишки. Если изначально путь инерции, он мне прям совсем казался классным, потому что, ну, представь, у тебя нету роутинга на фронтенде, у тебя нету стейт менеджмента, это сразу геморрой адовый добавляет
71: И нету вот этой истории, что надо сходить в апишку, а там как проектировать её, если тебе надо много данных, у тебя несколько, короче, вот эти вот все проблемы с кэшами, со всей этой фигнёй, то инерция, конечно, очень классная история, но чем дальше, тем больше я начинаю не то чтобы сомневаться, но я понимаю, что если бы я
72: Начинал я вообще, во первых, другой стек технологии выбрал, но если говорить именно про рельсу, то это можно отдельно потом поговорить. Почему? А если бы говорить про рельсу, то как будто бы с иишкой уменьшается вот эта вот необходимость просто апишка, она чуть больше позволяет делат
73: Контроля на уровне знаешь чего дизайн ферст можно делать то есть можно генерить спеки и на базе этого много генерации потому что иишка, она же любит спецификацию. То есть если у тебя есть вот эти вот все штуки ручки, то проще делать генерацию, а без этого все-таки похуже потому что там
74: Прямой связи нет, ну типа ты в контроллере создал данные во фронтенде, они магически появились, а склейки как бы нет, ты даже проверишь. Ну, тупо забыл в 1 месте передать, в другом месте не появилось. Ну, это такие уже очень технические проблемы, но, короче, апишка в этом плане, при том, что это сложнее.
75: Но яишка может нивелировать это. То есть вот такая вот у меня пока мысль есть, ты упомянул как раз магичность рельсов. Давай вот это покопаем насколько
76: Это хорошо и актуально для тех, кто начинает сейчас работать с рельсами либо продолжает с ними работать, как бы понятно, зачем это могло быть условно в пятнадцатых годах как раз все красиво для разработчика читабельно.
77: 1 раз написал, оно в нескольких раз появилось, в нескольких местах появилось. А вот сейчас это все ещё плюс или уже скорее некий атавизм. Вопрос очень классный. Сейчас попробую его компактно выдать. Есть проблема. Люди очень по разному понимают это слово, относятся к нему. Это как в том,
78: В самом анекдоте про то, что русскому хорошо, то немцу смерть, потому что когда говорят про магичность, во первых, говорят про разные вещи. Во вторых, знаешь, когда вот в джаве говорят, вот у нас так и джавист такой, блин, какая же, как же классно. А рубист скажет, это же кошмар. То есть, как вы можете хвалить то, что является, типа плохи.
79: И Ровно наоборот. То есть вот это очень сильно зависит от культуры, языка, от подходов и так далее. Поэтому магичность здесь проявляется в нескольких аспектах. Давай начнём с самого простого, который я считаю, классный. И для многих людей это считается магичностью. А я, например, не считаю это
80: Гостья, считаю это хорошим дизайном. Это называется конвеншн овер конфигурейшн. Вы знаете, что распространил эта рельса? А все остальные такие стали кричать, ребята, нахера вот это все конфигурация? Давайте от всего этого уйдём. Как это проявляется, например, в рельсе есть вот этот вот стек главный, какой у вас
81: Там роутинг, обработчик, шаблон, ну, контроллер, там моделька, короче, вот этот вот проход запроса requests, http, реквеста, он весь на конвенциях. То есть у вас там очень прикольный ресурсный роутинг. Когда вы говорите, например, у меня есть ресурс юзерс, ресурс юзерс, это 7
82: Маршрутов у вас реально генерится. 7 маршрутов. Он сразу определяет, какой контроллер. Он сразу определяет, какие экшены. Он сразу определяет, где лежат ваши вьюхи. А написали вы при этом всего лишь 1 строчку ресурсес пробел, двоеточие, юзерс 7 маршрутов. Контроллер вьюхе полностью. Теперь смотри.
83: Это называется конвершн номер конфигурейшн, потому что такая штука, вы точно знаете, где какая папка. Ваш редактор знает, где какая папка у вас есть автоматический вот этот альтер называется alter alter файл, когда у вас переключение автоматом идёт не по конфигурации, а потому
84: Что так оно должно лежать. И, как вы понимаете, вот это тот самый момент, который с иишкой стал ещё более актуальный. Если у вас десятилетиями, там годами существует некая стандартная структура того, как, где че находится, прикиньте, насколько круто оно там ориентируется и круто с этим
85: Тем разбирается, как круто из 1 пректа переходить в другой. Думаю, у меня вообще такой проблемы ниразу не было, даже когда я эту вещь расскзываю кому. То есть люди, которые говорят, не Кирилл, это какая-то херня. Лучше, я явно ручками пропишу. Типа, вот, если, ну, знаете, как во всех фреймворках обычно там же прям явно прописывается, что если у меня маршрут такой
86: Значит, обработчик называется вот так и лежит вот там, или я должен прям заимпортить. То есть вы прям эту всю связку указываете ручками, и да, и помните, там даже во вьюхах часто, если у вас серверная шаблонизация, вы прям путь к файлику показываете, говорите, вот у меня файлик лежит, там вот это, что называется, конвершен номер конфигура.
87: И оно рельсу пропитывает просто везде. Это касается сторонних гемов, каких-то внутренних шин, подходов, всего, что угодно до такого уровня автоматизации. Вот этого конвершн, овер, конфигурейшн, по моему, не дошёл никто. А я знаю, потому что, ну все-таки
88: Моя задача учить людей, я много фреймворков все время щупаю, смотрю, изучаю. Ну не знаю, не доходит никто до этого уровня, все-таки останавливаются где-то раньше. Ну и, кстати, вы же знаете, что вот сейчас нас многие послушают, напишут это все херня. Я хочу контролировать все сам. Мне нужно, чтобы я конфигурировал поэтом.
89: Поэтому я считаю, что это очень культурная вещь, она вот есть люди, которых это нравится, а есть люди, которым это не нравится. И ты никакими описаниями плюсов, минусов не победишь ни одних, ни вторых. Есть другая вещь, магичность, которая уже людей пугает. И вот тут уже, конечно,
90: Немножко сложнее. У руби много метапрограммирования, очень много. То есть там весь язык рассчитан на то, что ты можешь в динамике творить чудеса, которые в остальных местах считаются абсолютным злом. Там надо принимать, применять рефлексию и так далее, когда, ну, очень силь,
91: Язык с точки зрения вот рантаймовых невероятных фишек, это очень прикольно в обучении. Это очень прикольно, когда ты с ним начинаешь работать такой, думаешь, а как я сейчас, типа, зачем мне, допустим, у меня есть там 5 гетеров, да, знаешь, как я в рубе могу сделать? Я могу написать массивчик из прям внутри класса в описании.
92: Не класса массивчик из 5 строк и в цикле задефайнить эти методы, и они определятся в классе прям неплохо. Короче, в чем эта проблема? Мало того, что это, ну довольно медленно все, да и это накладных расходов много в рантайме рождает у вас там банально может динамически генериться новы
93: Методы просто все время то есть там утечки такого рода, они легки но главная проблема даже не в этом. Вот представьте в рубе, например вы определяете роутинг помните я сказал ресурсы юзерс 7 маршрутов, он вам генерирует физически 7 методов то есть когда вы хотите сделать редирект
94: Или ссылку на какую-то штуку. Вам не надо ручками эту строчку прописывать? Вы прям знаете, что он это сгенерил. Вы пишите этот метод, и он внезапно есть, и он работает. Вопрос, если вы захотите перейти в исходник этого метода или грепнуть его по исходникам ничего нет. Угу.
95: Но то, как он строится, его имя, оно шикарно. То есть вы каждый раз, когда это видите, вы испытываете кайф, потому что, ну, например, новые пользователи. Знаешь, как будет new подчёркивание, юзер нью, подчёркивание пас, если хотите с хостом, подчёркивание урл, дальше редактирование пользователя и я думаю,
96: Что те, кто нас слушают, они уже начинают логику понимать. Эдит, подчёркивание, юзер, подчёркивание, пас внутрь передаётся идентификатор. То есть это как бы очень цепляет. Такие смотрят, думают, вау, вот это магия, вот это работает класс. А вот потом, когда ты начинаешь, там, хочешь статическую типиза,
97: Там переход посмотреть исходник у тебя ничего нет, поэтому я за время столько лет вот работы с ruby я где-то с 9 года начал использовать рельсу, но параллельно там и другие языки скажу так, мне честно говоря, сейчас гораздо больше импонирует кодогенерация, поэтому наприме.
98: Аннотации, процессоры всякие, да, в той же джаве, в котлине я больше предпочитаю, потому что у вас все равно на выходе есть код, который вы можете посмотреть, вы можете перейти, у вас работает статика, и при этом во многом это похоже на руби. Хочешь прикол, помните, в прин.
99: Буте есть такая штука, когда ты пишешь five by трата та, ну, в интерфейсе репозитория дата, которая дипана, да, он генерит тебе метод, ты знаешь, что это из руби пришло, из рельсы никогда не в рельсе, но в 2006 году ещё вот когда оно запустило
100: Там в динамических языках есть такое понятие, как передача сообщения типа метод Миссинг кол. Он называется в зависимости от языка, когда ты вызываешь метод. И вот если он его не нашёл, у него есть, он ищет специальный метод, куда он передаёт вызванный снаружи метод как имя, просто название.
101: И параметры его, да, и, соответственно, у тебя там любые типы могут приходить, потому что это постоянно динамическая штука, и руби сделает такую штуку. Ты, короче, когда у тебя есть, допустим, любой актив, рекорд. User, ты пишешь юзер точка и такой. Хочу найти по имени fine, by name такой. Нет, хочу найти по
102: Имени и имейлу файнд бай нейм энд имейл, или or имейл или find all by. То есть у тебя появляется некий паттерн, по которому ты можешь хоть всю табличку извлечь, используя там какие-то и предикаты, комбинаторику и внутри знаешь, как это работало тупо регекспами вот.
103: И у тебя это в динамике все происходило, че спринг Бут все это посмотрел, говорит, блин, идея то классная, но у нас, во первых, так не сработает, во вторых, надо как-то по другому, и они такие, о, а давайте просто будем кодогенерацию делать, но концепция абсолютно та же самая, то есть точно
104: Также ты описываешь эту штуку, поэтому получается по факту тоже самое. Только теперь у тебя есть описание, интерфейс, у тебя есть типы и у тебя есть имплементация, которую ты можешь посмотреть. Окей, про ееще генерацию искусственным интеллекто.
105: Попозже поговорим то есть я правильно понимаю, что ты как раз магией convention over configuration не считаешь, а именно вот эту вот историю, да, да, то есть отноше я хотел как раз это показать что отношение такое, если ты с этим много работаешь, ты понимаешь, что в этом как раз магии нет, это хорошо.
106: Работает. А вот магия именно метапрограммирования, которая позволяет тебе, ну ты просто самый яркий пример, что ты не можешь ничего загрепать, у тебя из ниоткуда берутся методы и функции. Ну, вообще все из ниоткуда берётся. Ну, это, я так понимаю, для неталантливого программиста огромный
107: Для стреляния себе по ногам, в том числе, знаешь, это как работает, это нормально работает, если это в библиотеках, особенно общепризнанных, потому что, как ни крути, знаешь, если у тебя там че то не работает, но зато все этим пользуются, все знают воркраунд, все знают, где может выстрелить. И с этим все нормально, но
108: Меня как человек, который обучает, какие кейсы были, значит приходит чувак, который в принципе нигде не работал, кроме тогда ещее андела и язык ruby для него 1 этот человек просто не знает, что такое хорошо и что такое плохо, то есть ему ну он видит в обучающих всех курсах смотрите, в руби можно динамичн.
109: Генерирует методы, и он начинает вместо того, чтобы писать нормальные методы. Вот это все. То есть, конечно, руби в этом плане нормален, хорош, когда ты знаешь, что такое хорошо, что такое плохо, если туда попадаешь, и тебя не останавливают, ты вот этой метамагии, метагенеза ии, там такого ада,
110: Делаешь, я этого понасмотрелся почему собственно гошники да, такие счастливые говорят а вот у нас ты бы так даже сделать не смог, если бы захотел и я с ними согласен в этом плане язык просто, а есть ли места, есть ли места где вот даже convention over configuration скорее Меша.
111: Чем помогает на твой взгляд? Ну не, ну, может они есть. Я не сказал бы, что это вижу скорее просто технологии. Иногда, знаешь, как можно сказать, вот давай так оно может быть немножко ортогонально, но все-таки у тебя, допустим, конвешен овер конфигурейшн. Какого план?
112: Возьмём вот эту серверную шаблонизацию и ты захотел в своём шаблончики вынести какой-то кусок куда куда-то в другое место. Ты этот кусочек, ну просто он повторяется в разных шаблонах, да, ты его выносишь, и у тебя рельса даёт специальный метод прям внутри шаблона, который называет рендер.
113: И ты в этом рендере указываешь путь до этого шаблончика. Так вот, дело в том, что вы же понимаете, что не существует лспк, не существует, короче, языка вот этого шаблона это некая очень кастомная штука. И поэтому, когда ты делаешь этот рендер непосредственно путь, от которого он смотрит, он где-то там в кишках,
114: Прописан, если у тебя редактор обучен этому, прям в него вшито. Вот джет брейнс, там вшито, да, он знает, как это открыть. Но если ты используешь просто какой-нибудь вим, где у тебя просто стандартный элспи, она у тебя в жизни этого не откроет, потому что ей нужна информация из рантайма, от
115: Там вообще в этих путях, я думаю, Женя, прекрасно, да, вот эту тоже проблематику знает, когда у тебя вот эта, вот эта магия появляется. А теперь смотрите, тоже самое на тайпскрипте, когда у нас реакт, если я выношу какой-то компонент, мой импорт это просто стандартный нодовский импорт, который
116: Работает стандартными механиками средствами. Более того, там есть рефакторинги, че угодно, и все это даётся мне за счёт стандартного элспи, а никакого там, там фреймворка, который внутри себя все это сделал. Поэтому, видишь, получается, что хорошо, что оно есть, но есть как бы просто
117: Подход, когда у тебя даже такой проблемы нет, вот в случае из шаблонов это прям яркая проблема, я это прям напрягает, ты тупо не можешь провалиться ни в 1 рендер, потому что нету прямого пути как бы понять, потому что шаблонизатор он, ну нет такой поддержки у него как у type script, а реакт в этом плане вообще ему
118: Ничего делать не надо. Он из коробки сразу работает. У тебя же был собственный подход. Вот под названием пенил рейлс. Я там находил, там, че то 18 пунктов этого.
119: Всего и даже книжку. Поэтому потом написали вот здесь, если говорить про архитектуру рельсов, вот можно сюда копнуть. В чем, собственно, твоя была идея и почему именно вот с этой точки зрения ванильные рельсы плохи, ну,
120: Знаешь, в чем была? Был момент, и через него проходят очень многие экосистемы в разное время, когда, знаешь, все такие, так, сейчас сервисы, а вот они так соединяются. А давайте, юскейсы, давайте. У меня тут события гоняются, короче, как организовывать бизнес логику так, чтобы вот все было.
121: Классно. И как правило, эти все разговоры и все это движение, оно такое оверинженерно инженерное, то есть начинается все, все легко и просто. А потом оказывается, что мы наворачиваем абстракции чисто инфраструктурных, чтобы вот весь код как-то там упаковывать, которые сами начинают требовать.
122: Слишком много времени на обслуживание. Я всегда на эту тему шучу, что вот если у вас в команде Разговоров о том, куда что положить и как организовать больше, чем о самом бизнесе, вы явно уже перешли эту границу, и надо остановиться. Но это сложно без внешнего влияния сделать. Есть некоторые люди, которые овер,
123: По жизни там ничего не сделаешь. Вот. И мой как бы подход был в том, что, ну, короче, когда ты довольно взрослый становишься, ты понимаешь, копипаста, местами нормально. События создают сложности, код, разбросанный по разным частям. Нахер надо лучше в 1 месте деревянно написать. Мой ещё такой был подхо.
124: Всегда, что хрен знает, с кем ты будешь работать. Код должен быть тупой. Наверное, я предвосхитил появление го в Широких массах, но у меня действительно именно такая философия была, и поэтому я её в коде как бы воспроизвёл, и там есть некоторые
125: Типа абстракции. Некоторые подходы. Че делать можно? Че нельзя, как мы вызываем. Оно частично вдохновлено, вдохновлено идеями, там, из ддд, например, частично, там мои какие-то вещи есть особенности самой рельсы, потому что там колбеки любят использовать, но это все равно некий такой, некая такая штука на
126: В общем, позволяющая масштабировать проект, оставлять его довольно простым, ну, до какого-то существенного размера. То есть, если все объединить, то это принцип, не надо заморачиваться там, где не надо заморачиваться, ну просто некий минимальный набор слоёв и правил, который позволяет так писать.
127: Достаточно нормально на разных людях, командах, но, наверное, слушай, если бы у нас было там, скажем, 500000 строк кода или 700, может быть, я тебе сказал, ну вот на этом этапе уже недостаточно. Давайте что-то более сильное придумывать из за такой болезни.
128: Чисто рельсовой, могу сказать, она и в других местах проявляется, но в рельсах особенно, допустим, у вас сохраняется какая-то сущность, и вы хотите на её сохранение, там, не знаю, отправить письмо или там бывает такое, что переходит в какое-то состояние. Вы в базе хотите отметить время, когда оно перешло в это состояние, а это в
129: Разных местах бывает в такие. Окей. Че, сейчас в разных местах эту лоику будут делать? А может, мне события надо внедрить и вот так вот сделать? Ну, короче, много пялятся всяких моментов. И стандартный путь, который рса предлагает, он на самом деле очень опасный. Они говорят, смотрите, у нас есть колбэки внутри модели бифо сейф, авто валидейшн.
130: И так далее. И это, честно говоря, кошмар. Вот есть вещи, которые они делают, потому что хотят упростить, и я их понимаю и как бы согласен. Но вот здесь они рождают ад, который очень быстро заводит даже небольшой проект в задницу. Че начинают люди делать, они вместо того, чтобы хоть какой-то слой абстракции сверх
131: Там навернуть хоть какое-то там взаимодействие, выстроить, например, они просто начинают пихать вот сейф юзера и погнали так, давай на safe юзера, вот это ещё сделаем, ещё вот эту зависимость удалим, тут создадим и у вас бывает такое, что в коде делается user сейф, а в это время полбазы там меняется, а ещё хуже, когда это the
132: На callback бифо валидейшен просто вдумайтесь, у вас есть такой метод в модельке, который называется там Валид проверяет валидный или невалидный, это же гетер, это как бы штука, не имеющая права вообще то изменять состояние системы, это просто проверка, угадайте, что делает, что делают в коллбэке?
133: Before валидейшн его менять начинают, туда суют всякие штуки. И у вас это приводит иногда к Такому коду смешному, когда у вас просто написано, вот представьте код, код, код и дальше написано юзер точка Валит с вопросиком и нет ифа. То есть что за идея вызывать? Ну, метод, который возвращает були
134: Без ифа, без всего. А ты такой смотришь внутрь. И такой, а, ну понятно, у них тут пол логики зашито. Эта страшная болезнь, я не знаю, сталкивались вы с таким в своей жизни или нет. Она, в принципе, встречается в других фреймворках тоже, где есть хуки или колбэки на лайфсайкл моделей. То есть эта логика.
135: Снаружи, а прики письмо отправляют, сохраняешь юзер, а там письмо отправляется внутри транзакции. То, что надо, то что, а вот к вам же приходили наверняка, ну просто обычные рельсовики, вот на вашу хекслет, кодовую.
136: Базу. Вот они как её воспринимали. Вот с учётом того, что у тебя там напридуманы, твои постулаты. Главная идея, кстати, вот этих постулатов, про которые я говорю, я это называю, так не писать против ветра я никогда не придумываю, не использую
137: Штуку, которая заставляет идти поперёк фреймворка. То есть, грубо говоря, колбэки мы просто не используем, но мы не не сражаемся с ними, а очень часто же делают так что типа, нахер вот эта вся ваша актив рекорд это фигня. Главное тут домен модель события давайте мы сами навернём и как бы откажемся от
138: Половины фреймворка это для меня это неправильный путь, потому что он может и более красивый, но вы просто тупо интегрироваться ни с чем не можете. Вы просто, ну все нестандартное, ну и как мы понимаем, и ишка с этим, соответственно, работать не может и так далее. Поэтому, когда мы говорим про мой подход, он максимально как бы в рамка.
139: Рельсы и используют её. То есть есть вещи, про которые я сам скажу. Вот так, с точки зрения хорошего дизайна, неправильно, но рельса именно так работает, и поэтому мы завязываемся на этот механизм. А вот такой прагматичный подход, он мог бы победить уже обсуждённую.
140: Нами магичность вот с этими, со всеми приколдес в рантайме, чтобы их просто не делать и намного чище все бы было. Это уже против фреймворка, например, тот же самый роутинг, но он классный, он там есть, он работает. И, ну, ты просто знаешь, как он
141: Работает и понимаешь, ну его, понимаешь? То есть тут нет задачи этого делать, но в целом то, что мы обсуждаем, вот мой, там мой подход, там есть сервисы, но там опять же, какие ограничения, они вообще то разумные, они правильные. То есть сервис нельзя вызывать из сервиса, там это нарушение 1 уровня абстракции.
142: Ты так скажет, любой человек, который в принципе, понимает в том, как сервисный слой строится, или, например, там в коллбэках ничего не писать. Ну, как видите, нет никакого космоса, да, и вот там набор каких-то таких правил, из которых все это строится, где-то ты сказал, но я не понял, а в чем в итоге проблема активе.
143: Да, ну, то есть, просто, ну, ормка для рельсов, что с ней не так? Ну, есть несколько уровней. Есть люди, которые орм, зло, особенно сейчас, прикиньте, сколько развилось, да, с тех пор, вот людей, которые очень сильно это отрицают, и другие подходы. 2, кто-то скажет, ну, смотри, у тебя там, Нару.
144: Ответственности это не дата маппер, ещё какая-нибудь причина. Третьи скажут, что у тебя ддд должен быть вообще отдельно. Короче, от твоей модельки и все такое. Я не про них. То есть я принимаю рем, я принимаю актив рекорд, и в целом он позволяет мне много чего делать, но там есть, короче, нюансы, которые
145: Я, наверное, не имеет смысла сейчас говорить, но с точки зрения того, что мы сейчас обсуждаем, это именно вот это вот колбэки, которые в документации описываются как правильный способ работы с логикой, когда вам надо что-то делать на сохранение моделей, когда у вас там что-то по связям происходит, потому что это говорю, это кад.
146: Приводит очень быстро. И программисты, которые не имеют этого опыта, не понимают, как строится архитектура. Они очень часто в эту сторону идут. Я вам потом в редмайне могу показать исходники. Там это тоже видно очень хорошо. Ты просто, ты физически потом боишься в контроллере сохранять сущность какую-нибудь. Ты пишешь там Юзе.
147: Ну, не юзер, ладно, там артика, пост, сейф. И ты не знаешь, че на самом деле там может произойти, там у тебя, может, полбазы, говорю, переколбасить. Я. У меня, значит, был такой пример. Я заходил в какой-то проект, и там был баг, связанный там с аватаркой пользователя, я в процессе раскопок накопал.
148: Что в before валидейшн стояло удаление аватарки. Как вам такое? То есть человек просто сохраняет пользователя, а у него в это время даже не сохраняет. Он, если просто валидацию вызовет, у него аватарка удаляется из базы класс, да?
149: А зачем дичь? Ну, потому что там вот надо было при сохранении, при, там не просто так это было, а при определённых параметрах, что вот если в пользователь какой-то, там, не знаю, галочка эта пришла, ещё че то, то дропаем аватарку. Почему? Потому что, ну, это же на safe происходит и логику.
150: У человека работает именно так, что, ну, значит, внутрь это не ещё раз. Фреймворк не заставляет так писать код, я имею ввиду, нет ничего, что сказал бы по другому нельзя. Но в доке так написано, и люди без опыта, они, конечно, могут пойти по этому пути. Хочется сказать, что и в других
151: Тоже всякого понаписано, что если следовать напрямую, будет плохо. Кстати, тут пару слов хотел сказать, все-таки в рублях, во первых, есть эпизация, другой вопрос, что такая, как будто бы и не очень хотелось. С другой стороны, ребята в страйпе сделали такую фантастику.
152: Вещь как сорбет, вообще просто гениальная идея, как в рельсу, как в руби. Это все воткнуть. Сорбет действительно помогает и поверх него ещё, поскольку рельса очень динамическая штука. Смотрите, к чему это привело. С 1 стороны, мы вот во всю используем сорбет, чтобы прост.
153: Нормальный код типизировать. Ну, типа, вот у нас есть определение класса, вот метод и ещё круто, что иишка очень хорошо это понимает. И поэтому, например, за последний год мы типизировали практически весь проект, там пока ещё 2000 ошибок типизации, но не 10000, как было в начале, но мы постепенно это убираем, и нам это очень помогае.
154: Тишка реально намного лучше пишет код, очевидно, когда у вас типизировано, и более того, код наш стал гораздо более джаваобразный, потому что очевидным образом мы теперь не просто там хэшами или там объектами, как в java скрипте оперируем, а мы типизируем, соответственно, у тебя енамы, у тебя классы, у тебя
155: В общем, все, что связано с типизируемым структурами, да, в отличие от просто кейвелью, значениями, которыми просто все было пропитано. Но сложность во всей этой истории в том, что вот вспомните про тот же самый роутинг, как типизировать динамически генерируемые методы, поэтому там появил
156: Дополнительная штука, которая называется тапиока, это херь, которая знает про рельсу. Ты её ставишь в рельсу, и она прям запускает твой проект, прям запускает и в рантайме смотрит, какие методы и че там есть. И она
157: Просто генерирует все эти типы под вот конкретно под твой проект. Поэтому получается, что когда ты ставишь новую зависимость, или ты меняешь что-то, что меняет вот эту динамическую, ну в динамике, там всегда есть такая команда консольная, типа регенерация, и он
158: И, да, работает типы все хорошо, все есть, но, как видите, такое все немножко это, ну, это же все сбоку, как будто бы, ну, в конечном итоге типизация это настоящая, то есть все хорошо, но я имею ввиду, из за того, что у тебя очень много в динамике делается. И таким вот способом аля дсль, ты это не типизирует нормальными способам.
159: Это типизировать можно только в рантайме. И это, кстати, тоже вот для людей, которые, ну, понимают эту разницу, ты такой, понимаешь? Блин, ну, лучше поменьше десели, может быть, побольше кода ишка пусть сама напишет, но зато типизируем. Поэтому я думаю, что настоящий рельсовик, если посмотрит на меня, он скажет.
160: Кто этого джависта пустил к нам в код? Скорее всего, так будет, потому что мой код сейчас похож больше. Вот как будто я в спрингбуте пишу. Но при этом глобально ты считаешь, что рельсам лучше бы быть более типизированными. Знаешь, получается не так. Я
161: Понимаю, что есть большая большое количество людей, которым очень это нравится. И получается, как бы я им поднасру, если я так скажу, то есть, наоборот, это я просто немножко лишний стал. Так это же я поменялся, а не они, у меня в голове появилось понимание, там, че мне надо и как мне надо, я понимаю, что
162: Ну, менять рельсу, это ломать через колено. То есть, наоборот, она остаётся островком. Вот для тех, кто это любит. И я это очень хорошо знаю, потому что у меня в чате такие разговоры постоянно. Я на подкаст ребят приглашал, я просто в их словах прям слышал, насколько они вот, вот про это им чуждо.
163: Чуждо то, что мне сейчас нравится, поэтому скорее я оттуда уйду, чем оно изменится. Я не хочу, как бы им портить и ходить. Орать везде надо больше. Типа в рельсе надо там хорош десели писать, переходим на вот это все. А раз ты вот с ребятами разговаривал,
164: Какие вообще они аргументы приводят за то, чтобы не надо типизировать и что вот пусть будет дальше выразительно, динамично и так далее. Не, ну они, кстати, правы, потому что, ты же представляешь, у тебя пол руби сразу теряется у тебя руби, там позволяет и так
165: Итак, ты там все нагенерил, у тебя там просто все просто генерация там в памяти, грубо говоря, да, а в джаве ты генерируешь просто вот файлы физические и опять же, за счёт того, как сейчас все это развивается, работает, то вот эта история в памяти, она же ещё че не позволяет, делат.
166: Ты там есть сейчас, естественно, джит, там есть этот компиляция в рантайме, но насколько сложнее все это сделать, когда у тебя ничего предсказать нельзя, вы вспомните, вот тайпскрипт, когда начали делать и вообще разбираться с джитом там
167: Же очень много прям было историй, типа, почему тайпскрипт ему очень сильно помогает. Ну, например, он заставляет вас правильно сразу описать структуру. То есть у вас, например, в объекте, там рандомно где-то вдруг поле не появится, его не было. Бам появилось у вас сразу кэши там внутри ломает и, соответственно,
168: Он видит, что, ну, ты не можешь этот, этот участок кода скомпилировать, а в рубе это просто противоречит как бы самому рубе. То есть, если тебе связывают так руки и заранее все надо определять, и все очень жёстко, тогда непонятно, зачем этот язык нужен. Есть языки, в которых, ну, типа, где
169: Это где? Это элегантность? Где это magic? То есть это ощущение вот как от смолтока было. Я понимаю, что на смолтолке почти никто не писал, но просто надо понимать, откуда ноги растут. Это некий такой вот вайб, отдельный внутри программирования, который немножко свой
170: И его приятно, что я через это прошёл. У меня нет ощущения, что, фу, какой-то кошмар, но вот даже в обычный продакшн, вот сейчас с учётом вот текущей ситуации, я бы предпочёл инструмент, который вот более деревянный, понятный, требует от тебя больше там написать, больше расписать, но я
171: Это делать сам не буду, это будет делать бездушная машина, которая понимает язык жестов и мата. Вот, а как при этом хоть какой-то производительности достичь с учётом того, что как раз руби типа супер неджи.
172: Friendly, из за всех этих вот рантаймов, историй и matt программирования. Прикол в том, что даже внутри рельсы это убирают. Вот помните, я говорил про five емейл и вот это все эти методы больше не существует. Сейчас просто fine by и внутрь ты уже как бы хэшом передаеш.
173: Уже понятным, то есть они тоже чуть чуть по чуть чуть где-то уходят и многие там spec вот например там штука для создания Тестов, там такая вся дсльнейшие просто все жили на этой штуке. Знаешь, че ещё прикольно получается. Рельсе можно ещё хотя бы быть благодарными за
174: То, что она благодаря тому, что у неё руби с его эпическими возможностями, подарила гигантское количество идей миру, которые потом вот так вот растащили, имплементировали уже, ну, используя более такие человеческие способы, чтобы мозг не выносить никому. Поэтому
175: Есть в любом случае, вот такое движение и есть попытки, конечно, ускорять. Вот у тебя там сейчас четвёртые руби вышли в них, там новый джит, который более быстрый, то есть там, ну, есть работа, есть движение и с точки зрения кода, и с точки зрения самого языка, но, да, скорее всего,
176: Каких-то тестах он покажет хуже результаты. Но если смотрите, сразу хочется сказать, вот когда люди про это говорят, вот про эту скорость, я все равно немножко мне обидно, потому что, ну, на простых веб, ну как простых, просто типовые веб приложения. Вы в жизни не скажете, что это рельса и такие типа, ой, кошмар.
177: Ну, на гитхаб сходите, нормально работает. То есть, страйп сходите, что он тормозит, что ли, у вас, то есть, все будет в рамках, как бы, нормы. Вы, наверное, не получите экстра результат, когда у вас просто там за 50 миллисекунд страничка отдалась. Ну да, но большинство сайтов вообще меньше секу.
178: Секунды отдаёт свои странички а там, извините понаписано то всякого разного красивого много короче очень много проектов которыми вы пользуетесь написано на рельсе и вы такие интерком на рельсе написан ёлки палки а кстати вот ещё проблема, мы же когда про real time говорили, почему собственно и не тольк.
179: А джанго, ларавель, вот все вот эти фреймворки, они пострадали от этого реалтайм, софт, реалтайм, чаты, все, что угодно, вы просто вынуждены ставить какое-то решение сбоку. Ну то есть правильно ли получается, что вот то как раз, о чем мы в самом начале говорили, что вот там
180: С 15 года, что как раз позитивно поменялось, что как-то этот алмаз ограняют с разных сторон, чтобы его немножко ужать, что-то более подходящее под нынешний рынок. Да, да, да. То есть он просто такой, типа, все более ни
181: Остановится. Я хотел про иишку на самом деле 1 вопрос прояснить, потому что я немножко запутался, когда ты говорил, сейчас иишка хорошо, на самом деле затаскивает и понимает какие-то аспекты. Вот, собственно, там, конвенции овер, конфигурейшен, потому что это было доведено до какого-то прям
182: Очень хорошего уровня, что всем все понятно и и с этим справляется, все проекты одинаковые. При этом ты же привёл пример, что там, в условном джанго, это так не работает. То есть я правильно понимаю, что на самом деле это подход с конвенциями не самый Удачный для ii, потому что и чем формальнее есть фидбэк лу,
183: Да, то есть там система типов какая-нибудь строгая, скомпилировал, все работает, не скомпилировал сорян. До свидания. Ну просто это сработало, потому что руби Набил достаточно много, набрал достаточно много веса там в обучающих выборках, чтобы у всех все работает одинаково в рельсах. Это
184: Уже, по сути, настолько понятно, что и начинает додумывать на основании примеров из за того, что все делают одинаково то, что она додумывает, оно имеет очень высокие шансы оказаться правильным. Давай так. Тут в 1 очередь речь идёт, конечно, про, наверное, структуру. Мы сейчас даже просто банально про
185: Папочки про сами понятия где они лежат у тебя просто вот есть папочка апп, в ней лежит джобс, в ней лежит вьюз, в ней лежит controllers, вот тут лежат лейауты и она из за этого очень хорошо ориентируется и даже понимает, что если я что-то меняю как че поменять, потому что если ты заходишь на гитхаб,
186: Даже если ты видишь стрёмно написанный проект на рельсе, так вот, они все, даже при том, что там много говнокода, очевидным образом, это опенсорсные прикладные продукты, да, там всегда много говнокода, ты просто тупо знаешь, куда надо идти. То есть ты даже сам как нейронка, понимаешь, что
187: Если я тут открою, я увижу роутинг, если я тут открою, я увижу вот это и в принципе, там все это строится по 1 похожему принципу. А вот внутри ты абсолютно прав. Это отдельная вообще история. Почему в том числе, я, например, сейчас предпочитаю другие стеки, потому что мне хочется статическую
188: Вот в целом как будто бы кажется, немножко двоякая история с искусственным интеллектом, что, с 1 стороны, вот то, что ты говоришь, действительно классно, что настолько все хорошо описано внутри, если ещё навесить сверху,
189: Эти обвязку в виде все затипизировать, то искусственный интеллект классно все будет писать. Но с другой стороны, не является ли вот то, что по факту руби он, рейлс изначально задумывался как очень читаемая краси,
190: Штука для программистов, что это все сейчас уже является избыточным, потому что люди то сами код перестанут писать и пишут просто иишки за них. Но вот читаемо наверное, ты прав, я не знаю.
191: Не, ну действительно, рельса даёт очень много синтаксического сахара вообще рубит. То есть это тоже часть философии. Метапрограммирование, синтаксический сахар, фэнси, ну, конструкции какие-то, да, там у вас есть блоки, у вас есть лямбды?
192: А ещё 500000 разных способов сделать 1 и тоже. Там методы, которые тупо, вот хотите. Прикол, например, рельса расширяет числа, прям числа. Ты можешь, знаешь, как ты можешь написать. С 1 стороны, это очень круто, потому что это единственный язык в отором. Я не лажу в документацию дат, с другой стороны, есть
193: Смотри, что я могу написать. 1 точка дей плюс fife точка Дейс и это прям реально будет дата. А я ещё могу написать today плюс fife, точка wix. Представляешь, насколько это нативно. Вот, допустим, тебе пришлось бы это делать в джаве. Вот скажи, смог бы ты без документации выполнить эту задачу?
194: Че то сильно сомневаюсь, я могу там ещё накинуть сложностей в том, как вычислять. Это касается всех Языков. Это вот даты. Если ты прям каждый день не работаешь с датами, это будет каждый раз как 1 раз. А тут мало того, что настолько это нативно, так это же ещё и прям в числа встроено и
195: Возникает вопрос, а как это вообще работает? One точка дей плюс fife точка Дейс что это такое? А так, прикол в том, что day days это один и тот же метод. Угу. Это не для машины сделано это для нас сделано. Я могу написать one точка дей плюс fife точка дей или days 2 раза могу написать просто
196: Чувствуете, да, в чем философия руби? То есть он вызывает у людей приступ такого мимими, ты такой смотришь на этот код и думаешь, матерь божья, вот это о людях подумали, да, и тебе это все нравится. Но, как вы понимаете веру ии, которому желательно 1 простой, тупой способ,
197: И в принципе, даже если кода чуть больше 1 хер ты его писать сам не будешь и более того, читать его намного проще. В итоге я абсолютно согласен, что это тоже становится не так актуально, как бы приятно это не было, как бы грустно мне не было это осознавать. Поэтому я верю, вот у меня
198: Мало опыта написания на гошке именно с иишкой, но я верю, что там, конечно, уровень генерации даже при отсутствии инструментария за счёт вот этой её деревянности. Он, конечно, там просто фантастический. Другой вопрос, как они эти тонны кода потом смотрят. Это открытый вопрос, кто там ревью проводит
199: Но то, что там можно бахать только в путь, это точно напишите в комментариях, если это так. Но при этом получается, если вот с другой стороны посмотреть, то вот на данный момент все ещё и туда тоже искусственный интеллект вполне применим.
200: И как будто бы даже с щепоткой дженна яя становится рубин рейлс ещё актуальнее, чем был условно год назад или нет. А это любая, мне кажется, технология. То есть, короче, иишка, она в целом нет такого, что иишка может какую-то технологии.
201: Сделать хуже и сделать её менее востребованной. Наоборот. Просто другой вопрос, что если ты начинаешь, если ты просто вот я в шопифая пишу на рельсе и там просто никогда в жизни не будет никаких альтернатив. У тебя сплошная радость. Но если ты, например, понимаешь, типа на уровне, а че выбрать, то, конечно
202: У тебя может приоритет вот на этом уровне поменяться. Ну Нафига мне это надо, если там я могу вообще все генерировать, а для этого там вот такие технологии надо выбрать. Короче, немножко меняется вот такой выбор. Вот, потому что хексит мы уже не перепишем, и мы понимаем это. И поэтому для нас это, конечно, там, типа сплошные плюсы.
203: Ну, его приходится, да, заставлять в какие-то рамки эту ишку лезть, что типа, вот есть 500 способов, а мы вот ne используем этот, или этот, используем те же самые колбеки, или там ещё какие-то подходы. Но я, знаете че жду вот уже сейчас все фреймворки почти внедрили, скиллы внутри себя, прям вот рекомендации какие-то, подход.
204: В рельсе вот в эту сторону двигаются, ещё не выложили. Я жду, что это произойдёт вот прям скоро и, наверное, станет ещё легче. Хотя, с другой стороны, я думаю, они же все равно эти скиллы сделают на серверную шаблонизацию, которая нам не нужна. Так что у меня есть ещё вопрос, насколько мы совпадём, так сказать, с ними по восприятию.
205: Того, что происходит. А вот с учётом того, что мы обсуждали в начале про, ну помимо convention over configuration ещё и вот про эту всю магию, как ты думаешь, если вот люди, которые не понимаю,
206: Вот масштаб проблемы и просто начнут генерировать ии с учётом всей магии рубин рейса. Не будет ли это в итоге генерить огромное количество плохого просто кода на рубио рейлс жизнь пока.
207: Когда ты уже довольно давно в индустрии, что баланс как-то не особо смещается, у тебя появляются какие-то инструменты, ещё что-то, но люди переходят в новый режим, где они начинают забивать, лениться, там, че то недоучивать. Соответственно снова это начинается те же яйца, только в профиль.
208: Поэтому, по мне количество треша, оно примерно по именно, знаешь почему не по объёму, а именно по соотношению примерно одинаковое. Вот как было, так и сейчас будет. Типа, есть ребята, которые понимают и могут писать. Есть ребята, которые вот пишут, как пишут.
209: Ларавель развивается, фреймворки, деньги, там все стартуют, проекты, все хорошо, просто оно вот ушло тоже примерно в это не интерпрайс, а стартапчики и что-то в духе этого соло интерпренер. Да, я к чему, короче,
210: В целом иишка не заменяет мозг, если вот так вот упрощённо говорить то, что я рассказываю, если человек до этого не мог и не понимал и не рефлексировал, ну и с иишкой тоже самое будет. Ну, я скорее про то, что вот слоган, который на главной странице
211: Сайта рубин рейлс, он на самом деле не вполне верный, потому что если вот просто взять рубио рейлс и начать генерить код, то конвершен овер, конфигурейшн не спасёт, потому что у тебя ещё куча каких-то скрытых мест, которые вот мы описали в ходе этого
212: Выпуска, где ii нагенерит какой-то белиберды, которая абсолютно, слушай, она набери, она генерит как раз как раз стандартный рельсовый код. Вот вопрос в том, насколько хватит этого. Я уверен, что вот если сейчас начать с нуля на рельсе проект полностью идти
213: И по его пути. Плюс сейчас вот скилы, говорю, они должны выпустить скоро. Да, я уверен, что он будет канонический, классный рельсовый код, классный в терминах рельсы. А вот вопрос, в какой момент он упрётся в то, что с этим уже сложно будет работать, это другой вопрос, но я тебе точно
214: Скажу, это не произойдёт сразу. Ну, то есть до Десятков тысяч строк кода вполне, а 10000 строк кода на рельсе это не 10000 строк кода на джаве. Я напомню, что та же модель, это буквально класс, название, наследование и, and на 7, 15, 15 символов, да, поэтому получается, что 2 мы даже
215: Ещё много лет назад сравнивали у тебя на рельсе проект в 20000 строк, это типа сотня другая на джаве, это объективно так будет, и поэтому, когда мы про это с тобой говорим, а может и нормально, ну, мы mvp делаем, ты слушайте, да, возьмите вот сейчас всех этих.
216: Мамкиных, которые там стартапы запускают, я тебе гарантирую, что у них в 1000 раз более худший код прям вот с 1 же релиза, где там ещё кода вообще нет. Поэтому если мы вот про этот уровень говорим, типа запустили, причём не просто запустили все же эти стартаперы, на самом деле, это же fake почти всегд.
217: Да, потому что там нет ничего, кроме вот я выложил, посмотрите, а клиенты где? Ну хоть 1, а вот с рельсой ты можешь реально дойти до клиентов, и причём не 1, не 2, а там сотен. Ну и может и больше. И при этом у тебя иишка будет полностью делать вот на конвеншена и на подходах.
218: Которые выбраны в ельсе hotwire, там вот все, что мы перечисляли, так что видишь, оно не совсем так. А вот дальше уже вопрос как бы встаёт, че с этим делать? Я даже уверен, что если бы, допустим, вот именно рассматривая эту картинку, и мы бы с тобой выбрали, ну, допустим, гошку или ноду.
219: Вот так весело и задорно бы не получилось. Там просто нет этого инструментария. Там так много пришлось бы клеить, собирать, чтобы вот хоть что-то подобное получить, что вполне возможно, ишка бы сама где-то там сломалась посередине, что, ой, я не могу, слишком сложно. Не, ну я могу быть не прав, но я уверен, что на рельсе точно это будет го.
220: Гораздо быстрее, эффективнее и каноничнее, что ли, в её картинке, но для меня, как видишь, уже это не подходит. То есть на том размере, который у нас проект. Если я ей скажу, делай вот как надо, но она сделает то, что мне придётся удалять.
221: Про что мы ещё не поговорили про компоненты мы не поговорили в рельсах, насколько вообще, которые, да, работают сейчас, и актуален вот компонентный подход в рельсах, вот все эти там хелперы, шаблоны и так далее.
222: То есть, если мы берём вот этот вьюжный слой, который интегрирован, он, конечно, очень крутой. То есть вы действительно стандартные вещи можете делать быстрее, чем где-либо. Это абсолютная правда, другой вопрос, что опять же, если вы отказались от этого, вам как бы пол рельсы сразу становится не нужно. Дальше есть, можно сказать, не
223: Некоторые вот отдельные штуки, которые сами по себе представляют ценность вот active record мы говорили да, и про magic, кстати, тоже вот представь, ты говоришь класс. User and больше ничего. У тебя эта штука при старте приложения делает?
224: Запрос в базу делает дискрайб, таблички и генерирует методы в этом классе, и у тебя внезапно ты пишешь user new, а у тебя есть name, ты можешь установить, ты можешь делать выборки и все остальное. Ты когда-нибудь такое видел? Видел? Нет, но тебе в любом фреймворке надо описать.
225: Как минимум там поля, атрибуты какие-то. Ну короче, тебе че то надо делать, здесь вообще ничего делать не надо, у тебя просто пусто если у тебя, например, есть у юзера есть посты и там есть user id, ты просто пишешь внутри юзера билонг, ту пост, и все, у тебя появляются методы, ты можешь создавать пост.
226: Через связи ты можешь выборки делать через связи, ну там типа юзер точка пост точка файнд и что-то, и он будет искать только посты этого пользователя или ты пишешь юзер точка пост ферст он там достанет там типа 1, 1 пост. Ну смысл в том, что у тебя вот он
227: Пост ты с ним можешь, а только не белонг ту хэз менит, потому что это связь 1 ко многим там билонг ту, это в обратную сторону, это в ту сторону. И все. Ты больше ничего не вписываешь. Внешний ключ писать надо. Нет, почему? Потому что конвершен, овер, конфигурейшен, надо просто его правильно назвать. В базе улавливаешь, да, идею, вот можно считат.
228: Злом и магией. Я считаю это полным добром и как раз крутостью, если надо кастомайзить. Но это, знаешь, такое золотое правило. Если ты понимаешь, что тебе надо кастомайзить, может быть, ты че то делаешь не то это очень удобно, потому что оно тебе подсказывает, как бы, что ты уходишь от стандарта фреймворк и
229: И опять же, ишки сильно с этим легче жить. Поэтому, например, та же самая эктив рекард, когда мне рассказывают ужасы про хибернейт или там ещё про какие-то вещи, я говорю, блин, как будто бы вы с актив рекордом никогда не работали. Плохо. Представляете, как он в рельсе устроен? Ну, типа, это реально классная штука. Хотя, опять же, сейчас, учитывая типизацию,
230: Я, конечно, уже скажу, блин, ну все-таки я бы джипа выбрал спринговый, потому что, потому что там как раз-таки все очень чётко, поэтому, видишь, получается, как бы active record, рельсовый позволяет тебе очень быстро, прям и там интегрированные крутые мигра,
231: До сих пор у многих таких миграций нет в spring гуте вообще ты задолбаешься. Ну, короче, там есть система миграции в других местах, там тоже какие-то есть проблемы. Ну, короче, вот. Потом ты берёшь, например, есть в рельсе очень классная штука. Знаешь, че, система джоб, асинхронных джоб.
232: Когда тебе надо в фоне че то сделать и что очень важно, люди, кстати, часто путают джобы и очереди. Это не одно и то же, потому что джоба, это ты просто говоришь, я хочу выполнить некий кусок кода свой же, но асинхронно. А очередь это всеки. Когда ты говоришь, вот произошло событие, а че там дальше происходит? Это вообще не моё дел.
233: Я ничего не жду, и меня это не касается, это очень концептуально все меняет. Несмотря на то, что транспорт может быть один и тот же, ну, редис, типа, да, так вот, они буквально недавно, знаете, че сделали? Они там был такой классный пост на тему того, что смотрите, у нас базы стали очень производительны. Мы раньше всегда, как бы, дл.
234: Этого рельсу использовали редис и через него гоняли, но для большинства проектов достаточно базы, и они сделали решение, которое является универсальным с разными адаптерами, там, например, да, но при этом базовый адаптер, он как бы хранит все это в посгре, либо отдельной базе, либо в той же
235: Где у тебя приложение? Ну, там 3 или 4 таблички, ну, понимаешь, да, там зафейленные джобы, не зафейленные, там проектиро этот повторяющийся, если у тебя типа аля крон, вот такого решения до сих пор нет вообще ни в 1 экосистеме. То есть каждая экосистема
236: Тебе говорит, либо ставь стороннее решение, либо тащи редис и я это 1 из причин, почему даже я такой, блин, 1 эта фигня стоит того, чтобы на рельсе оставаться, ну, по крайней мере, для опять же, solo, интерпренер в tip меня, ну, такой почти соло нас, там полтора человека, и
237: Там для писем есть сразу готовое решение, которое там не только отправляет, но опять же шаблончики под них готовит, там интегрируется с чем угодно. И обрати внимание, письма сразу интегрированы с этой асинхронной фигнёй. То есть, когда ты отправляешь письмо при регистрации, тебе даже не надо самому думать, и проект
238: Систему, типа, а как мне это делать? Асинхронно, чтобы, ну, не знаю, если у тебя смтип не отвечает, у тебя 500 человеку не показывалось, когда он регистрируется, да ведь там так не делается. У тебя обычно кладут какую-то кафку, какой-то там другой сервис это вычитывает. А в рельсе ты просто говоришь создать письмо.
239: Выполните синхронно. Ты так просто это не получишь ни в 1 экосистеме. Сейчас у меня вопрос тогда сразу здесь. Во первых, мы же говорим именно про рельсовые джаббы, потому что я там много, опять же, на работе слышал про сайт кик сайт кик. Это отдельная история. Тоже самое. Просто сайт кик он появил
240: До того, как рельсы стандартизировали, это, то есть сайкик, это отдельное решение, не рельсовая. Да, да, да, да. Угу. Ну, нет psychic. Он, конечно, работает с рельсой, то есть он прям для рельсы теоретически, может, ты его можешь отдельно запускать, но я такого не слышал. То есть он используется в рельс.
241: И сайт кик, он требует как раз редис. И вот они буквально вот с 8 версии зарелизили солит кью, который работает уже с пагрей. И мы от сайкика уже давным давно ушли. И вам это не нужно, потому что у вас действительно вам редис не просто так нужен, вы огромный, у вас там
242: Нагрузки, все такое. А для проектов, типа, нас нахера мне поддерживать отдельный редис, сетапить его там, вообще думать про него, когда просто может в базе таблички лежать у тебя, смотри, у тебя сразу появляется транзакционность, у тебя сразу, поскольку это встроенное решение, интегрированы все компоненты, рельсы и как я
243: Говорил письмо просто деливер Лейтер. Угу. Оно там отправило. Слушай, ну у меня тут просто концептуально в голове немножко не сходится, потому что если это все часть, ну, именно система джабовском, се часть фреймворка, как это я вижу, короче, либо, если это система джабовском, её, наверное, хочется, чтобы это было разделено по ресурс.
244: Потому что я хочу, чтобы мой основной код, который выполняется, вот мой, мой сервис, там, не знаю, все, что угодно, что отвечает на запросы, чтобы он не зависел от того, что я там запустил какие-то джабы, они у меня сожрали условно весь процессор, или весь ао, или что-то ещё. Тогда это должно быть как-то развязана инфраструктур.
245: Что я запустил? Это на самом деле вообще на другой виртуалке крутится. Либо если мы говорим, что это так и есть, да, и это прям во фреймворке зашито, что я запускаю код как свой, типа проект, а на самом деле он у меня сам раскидается по каким-то. Объясню, как это устроено у тебя, по сути, джаббы это за
246: Твоего же приложения, потому что посмотри, мы исходим из того, что рельса декларирует монолит это хорошо, это вот опять вот это solo интерпренер тво типа ребята, давайте если вы там кардинально против понятно что рельса вам не подойдёт по идеологическим причинам да, вот монолиты нормальные до определённого.
247: Размер вот у меня сколько лет, он там не растёт, он вырос когда-то вот до 100000 строк и все, больше не растёт, потому что мы только типа меняем код, и я знаю, что до конца моей жизни или жизни моего проекта так и продлится. То есть мне и не надо больше ничего. Короче, знаешь, как это устроено у тебя, по сути, когда тебе нужно, чтобы он
248: Джобы обрабатывал, у тебя есть режим, который вообще то не используется никем. Классический асинк. Сейчас бы любой про это сказал, что в любом фреймворке, так, когда он у тебя действительно прям в этом же, в памяти у тебя где-то там асинхронно крутится рядом с твоим приложением. Но этот режим, он просто
249: Но его использовать нельзя. Ну по очевидным причинам там у тебя и упасть все может и вот то что сейчас мы проговариваем поэтому решение там очень простое у тебя в принципе само приложение стартует по другому. То есть у тебя есть start рельсы как веб сервер куда он там цепляется через рак, а есть start рельсы в режим.
250: Джабы, то есть у тебя джаба управляет рельсой? Тут важно понимать, что рельса с точки зрения кода это некий объект просто, который типа реквайр, там рейлс, и он тебя поднимает, твоё приложение, которое является, по сути, просто объектом, которым можно пользоваться. Поэтому джаба, как бы над, над рельсой получается.
251: Окей, понятно, спасибо. А с учётом того, что все внутри зашито и не нужен редис, есть, там солит, кью, солит кэш и так далее. Да, да. Кэш там есть, да, тоже, если как бы что-то пойдёт не так.
252: То есть вот как, как понять? Я понимаю, что внутри вот этой вот замкнутой экосистемы у меня не работает что-то. И вот что мне нужно идти зачем-то и сбоку. И этот вот классный стек, замкнутый в себе внутри, расширять
253: До чего-то вот где вот этот вот назовём так кейс, где уже вот это то, что внутри редиса, ой, внутри рельсов есть не подходит ответ очень простой. А все-таки фрейворку то много лет и делают его ребята, которые начали, ну то есть не все
254: Все эти вещи, которые мы говорим, появились, естественно, в самом начале. И до того, как появился вот этот солид кью, который конкретно хранит джобы в базе, в постгрессе. Да, кстати, интересно, в мокеле он хранит или нет? Вот я вот не помню, наверное, да. Ну, короче, в базе до этого сначала там появилась абстракция, которая называется active джоб, то есть
255: Они сначала поняли, что для того, чтобы внедрить туда хоть какую-то имплементацию, надо сначала ввести абстракцию, которая, которой можно цеплять разные адаптеры. И только благодаря этой абстракции можно как раз все остальные компоненты на это завязать. То есть, например, вот этот вот отправка емейлов, который прям умеет в джо,
256: Кидать сама, без твоего участия она не на конкретную имплементацию завязана, она завязана на active джоб а вот active джоб уже к нему, уже даже, по моему из коробки 7 адаптеров идёт, включая сайт кик кстати, которые, собственно, хочешь редис, хочешь амазоновский этот, как он.
257: Simple, queue, я уже забыл, там называется, мы его использовали, когда на амазоне были там 10 лет назад. Короче, вот именно эта часть решается полностью. Просто это все звучит как будто бы все сделано почти идеально. Вот как раз для solo интрапренера, как только
258: У тебя какая-то плюс минус большая команда, то точно пахнет проблемами какими-то. В этом то и прикол, что речь идёт о довольно большом объёме когда они вот эту штуку делали в базе, там очень было к этому моменту сайт кик с редисом.
259: Существовал очень много лет, и вот видишь, там и shopify, и все. То есть они это же вместе делают шопифай, очень большой участник вот этих всех переговоров и всей этой истории, он как бы driver. Поэтому там как бы, ребята, когда это делают, они исходят из того, что там, не знаю, в бейскемпе, сколько у них там 1000 серверов, да.
260: И вот они, типа, а какое решение нам сделать? То есть, представь, бейскэмп 30 человек, разработчиков, по моему, 1000 серверов, и они у себя внедрили это решение. Вопрос, каким должен быть у тебя проект и до каких, до какого уровня ты должен дорасти, чтобы это стало проблемой? Я знаешь, как всегда про это говорю, как предприниматель, ребят.
261: Вот программисты обычно говорят, вот посмотрим, когда ты дорастёшь там до таких нагрузок, и как ты запоёшь. А я им хочу сказать, самое сложное это довести бизнес до этих нагрузок. А че там технически это вообще не моя проблема. Я там найму людей, которые будут решать. То есть ес.
262: Я, в принципе, дошёл до состояния, что я в состоянии нанять себе 30 разработчиков. Ну, я богатый человек, ребята, че могу сказать, у меня 1 разработчик. Ну вот, если будет 30, я буду считать, что я богатый человек, и, честно говоря, там все эти проблемы уже перестают быть моим проблемам.
263: 1 разработчик и то я агент.
264: Вроде мы закопались в разные аспекты технические, там разные компоненты и всякие штучки про то, как писать код. Но меня на самом деле в рельсе удивляет, потому что я с ней, наверное, не так сильно знаком, и поэтому мне эта концепция до конца не понятна заявле.
265: В общем, удивляют заявления о том, что как бы все запаковано во фреймворк, включая в том числе и как будто бы диплой. То есть мы все вот эти опс, всякие разные пытаемся на самом деле перенести во фреймворк тоже, чтобы не было вот этой всей истории, когда вот 1 человек пишет код, другой,
266: Решение, как он где-то запускается и крутит. Можешь рассказать, как это вообще на самом деле устроено. Ну ты заметил, да, что это все вот туда же. Поэтому если ты как бы согласен с этой концепцией, даже не согласен, но понимаешь, что она существует, то, в принципе тогда к рельсе ты такой вообще то разумно. То есть практически все, что там есть ты.
267: Будешь воспринимать как разумно, давным давно, в те самые дремучие времена, когда никак, даже энсеблу было. То есть тогда ещё шеф, по моему, только появлялся, паппит вот был. Ну, в общем, короче, с инфраструктурой так себе было вообще в плане диплой баш скрипты наше все рельса опять впереди.
268: Планеты всей, то есть в те года она все практически была впереди планеты всей. Говорит, а давайте сделаем инструмент, который может вот прям вообще вот прям ты туда приложуху загнал, она деплоит вообще все так само там, чтобы понимали, там настройки, как миграции делать, с какого сервака конкретно запускать.
269: Миграции, чтобы у вас сразу с нескольких аппликейшн серверов это не шло. Сейчас, правда, большинство систем миграции пытаются локи ставить, чтобы, типа, ну, не париться. Ты в Кубе делаешь запуск миграции отовсюду, они как бы сами через базу, там мягкие локи, они, в общем, разбираются, но
270: Тогда этого не было во фреймворках, и поэтому она, типа, говорит, так вот с этой машины. А ещё у меня вот этот кластер, а тут, значит, у меня реплика и так далее. И все это кодом описывалось просто в 1 файлике. Вот, чтобы вы понимали на то, в то время капистрана была настолько сильной, настолько крутой, настолько вообще, и
271: И заметьте, как это ложится в конву всего, что мы сегодня говорим, немножко поменялась как бы оболочка. Мы вышли на новый виток, но лиса продолжает вот эту вот упорно, вот в эту концепцию, как, какой она была. Типа, все из коробки, мы сами, никто нам не нужен, вы взяли
272: Рису, вам больше ничего не надо. Соответственно, сейчас это выродилось в Камал, который, конечно, более, ну, он как бы пропагандируется чуть более таким универсальным. И более того, если капистрана все-таки она деплоила приложение Ставила руби, там и настраивала сервак, то Камал, он такой, типа, уже
273: Давайте работать с контейнерами и поэтому вроде как бы он чуть больше отвязан от непосредственно рельсы. Но с другой стороны, понятное дело, что он, по моему, сам на рубе написан. И понятно, что он сюда тяготеет, но в любом случае он, он действительно позволяет ребятам, как бы находясь в 1
274: 1 экосистеме, никуда не вылазя, настроить этот деплой, потому что, а че тебе иначе, иначе надо, ну, ты либо на куб лезешь, что они видишь, говорят, куб, не всегда хорошо. Либо, ну, например, мы в какой-то момент, когда вот с капистрана ушли, знаешь, чем мы начали пользоваться, мы просто энселом деплоили. Причём сначала код
275: Потом же и контейнеры прекрасное совершенно средство. И сейчас вообще никаких проблем. Пожалуйста, деплойтесь. Кроме Камала, то там ещё кое-что есть. Ты же знаешь, что в 1 из последних релизов они сиайку добавили. То есть ты теперь таким же образом описываешь шаги сиая, и у тебя все внутри тоже как бы как на сиайке запускаться, прям вот в Рубик.
276: Да, такой путь рельса выбирает. Но, заметь, это не сегодня появилось, это все было ещё до того, как вообще любые другие инструменты появились. То есть оно просто реинкарнировалось, да, это вот видите, как бы рельса в какой-то момент придумала сборку фронтенда сама от этого отошла, и теперь от
277: Этого немножко страдает, она продолжает, типа, мы сами, сборка живёт своей жизнью, инфраструктура рельса там капистрана все дела, но если нужно, можно же kubernetes подключить, конечно, это, ну смотри, я не использую ни того, ни другого. То есть для меня все-таки это уже как-то, ну вот не очень я
278: Согласен, с такими подходами мы куб используем, да, снова. Где вот та грань, где такой подход перестаёт подходить. Вот как ты думаешь, он очень далеко, прям очень это, это прям реально у тебя должен быть проект уже вообще, ты там зарабатываешь бабло, у тебя народ и все остальное, я говорю, даже до деся.
279: Разработчиков. Просто разработчики, привыкшие в БИК техе работать, они не очень, мне кажется, осознают, какие это деньги. То есть, если у тебя в компании десяток разработчиков, это говорит о том, что у тебя ещё есть маркетологи, продажники и вообще как бы работающая система и клиентов много. То есть это уже что-то серьёзное дойти до этого, в принципе,
280: Ну, сложно уже вот хотя бы до этого уровня. А на этом уровне рельса справляется очень хорошо. Ну, типа, не будет проблем там особых, особенно, если там треш всякий не делать прям уж специально. Вот. Поэтому я бы честно сказал, что даже не так скорее стоит разговор. Вот, давай, я бы в моей
281: В голове немножко по другому устроено. В моей голове есть либо вещи, которым она просто не подходит по очевидным причинам. Ну, мы там, не знаю, чат делаем слак. Нафига тебе тут рельса, чтобы слак делать? Не знаю, ты там микросервисы в интерпрайзе. Нафига тебе тут рельса? Там вообще она нигде не нужна. А вот если я говорю, я хочу сделать свой собственный хаб.
282: Или я хочу сделать vs свой собственный или я хочу вот не знаю какой-то вот такой сайт сделать прекрасный выбор пожалуйста особенно если ты 1 и ты хочешь очень быстро и чтобы все само вот и в таком случае уже любой если мы говорим про программиста выбор будет делать так люблю я типизацию.
283: Не люблю. Люблю я магию или не люблю. Это всегда контринтуитивно и контр. Ну, короче, это эмоционально нелогический выбор. Я не видел программистов, выбирающих технологии неэмоционально, че бы они там не говорили. Это всегда история про то, что я это люблю.
284: Не люблю. А оправдание. Найдётся, что с масштабированием такой архитектуры. Если она вот вся на Камале написана, а Камал, то какая разница? Камал, это же ничто, это просто, ну, он разнёс тебе, смотри, вот, например, у тебя минимальный уровень масштабирования, доступный вообще везде это
285: N. Количество аппликейшн, серверов и база с репликами. Ну и там, понятно, эти, господи, как они называются, ну, перед ними, там балансировщики. Вопрос, сколько ты сможешь поставить таких машин и сколько ты можешь таким образом масштабироваться? Да, там практически до бесконечности, я говорю.
286: Кемпе у них там, по моему, под 1000 серверов. Понятно, что там какие-то для background. Джоб, ну то есть, чтобы зайти за рамки этой штуки, я не могу себе уже сервис представить. Ну, если ты не google или фейсбук, то есть это, или ты там терабайты данных перекачиваешь, там переделываешь, и тебе нужно там быструю обработку и даже
287: В этих ситуациях бывает, вот возьми Шапи, ай, Вон там люди на расте, пишут какую-то штуку, но они же не вот эту веб морду пишут, они же какие-то внутренние части пишут, и мы говорим про масштабирование, смотрим на шипий. Ну кто крупнее шипия станет? Ну тому плюс, конечно,
288: Но это надо постараться очень сильно. Короче, здесь, чтобы прям, если вы выбрали его в ту задачу, где рельса подходит, я считаю, что упереться в масштабирование, это надо постараться прям очень сильно постараться. Я всегда просто люблю это приводить в пример, потому что, говорю, программисты часто вот это вот up
289: Упускают из виду, что как бы технические сложности это ничто. Если у тебя есть деньги, можно нанять всегда очень умных ребят, но я правильно же понимаю, что когда мы говорим про что-то на рельсах, то это всегда про монолит или нет.
290: Не, ну естественно, ты можешь много чего повыносить. Знаешь, что ещё? Кстати, интересно, вот джобы, которые мы используем. И когда ты разговариваешь с людьми, не понимающими, что такое джобы, не работавшими с ними, они все воспринимают только через очереди. И каждый раз выясняется, что-то, что для нас является просто
291: С обычной джобой, они микросервис, под это пилят. Короче, совре я не бывает современных сервисов, которые ни с кем не взаимодействуют с внешним миром. А вот когда ты говоришь, что ты хочешь, и более того, например, смотри, у нас есть внутренняя история, там биллинг, там большая штука, вот, возьми.
292: Вот мы использовали страйп, сейчас не используем по понятным причинам, но вот есть страйп, вот представь, что мы вместо стайпа вынесли бы, написали отдельно у себя внутри, на другой рельсе и просто по апишке ходили. Вполне себе укладывается. Да, а чем это отличается от того, что я страйп использую, который тоже на рельсе написан, а он ещё и как бы
293: Мощный, крутой. Че вот тебе, пожалуйста, 2 сервиса хесли сервис страйп сервис. Вот мы взаимодействуем. Короче, я к тому, что здесь технология никакого значения не имеет, это скорее речь идёт. Знаешь про что? Вот когда ты говоришь, что вот мы бигтех и у меня прям телеком, в котором там вот эти там процессят,
294: Карточки вот эти то вот это то тут рельса вообще не в тему, там ошибки, там типы, там совершенно другие понятия, там дизайн ферст, там вообще другие протоколы. Вот тут даже странно, причём здесь вообще шаблонизация. Давайте начнём с этого, там люди в принципе, не видели, что можно на сервере шаблоны формировать, они
295: Джейсончик ми, там или протобуфа и обмениваются, и все. Поэтому, мне кажется, он такой вопрос немножко. Если правильно понимать картину, он не на повестке стоит. Смотри, че делаешь.
296: Нельзя поговорить про рельсы и не поговорить про экосистему. Что вообще сейчас с экосистемой, насколько все вот эти рейлс фаундейшн, они как это хороши, актуальны.
297: Поддерживаемые и активны. 1 из самых классных вещей, которая всегда была в рельсе. Это комьюнити, которое очень, конечно, оно компактное по сравнению с другими. Это вам не джаваскрипт тёп скрипт, но очень много
298: Классных ребят очень много активистов, очень много тех, кто прям реально болеет. Ну то есть к рельсе относится больше, чем к коду. Вот как-то так там всегда складывалось, мы все друг друга знаем, мы все как бы вот из этой тусовки, и там примерно такая же ситуация, и оно рождает то, что у рельсы действительно
299: Очень много опенсорса. Вообще. Помните, был момент, когда на гитхабе руби был номер 1 по количеству опенсорса и движухи, и потом постепенно, конечно, остальные забрались, но даже до сих пор это присутствует у нас в руби вообще всегда считалось, что как ты вообще, в принципе, можешь её коммитить в опенсорс. Ну, то есть
300: Если приходит профессиональный рубе, разработчик, у него обязательно есть либо свой, либо он че то выкладывает. Попробуйте у джависта такое спросить, или там у кого-то ещё там просто вообще нет такого даже понятия. Поэтому, если ты смотришь на проекты, очень многие там активно развиваются, вся фигня не отнять того, что действительно в целом комьюнити.
301: Вот за это время поджалось, опять же, оно на каком-то стабильном уровне, но поджалось. И поэтому и разговоры регулярно такие, типа, а что нам сделать, чтобы рельсу, чтобы все чаще использовали? Или, например, ты заходишь, особенно в библиотечки, которые знаете, с чем связаны? С как раз
302: Шаблонизации, но она умерла в том виде, в котором она была. То есть сейчас там как бы новые инструменты появляются, типа новые поколения. И более того, я даже вижу всплеск некий в этой области, но именно те инструментарии, которые мы 10 лет использовали там для того, чтобы генерить шаблоны, формы, делать, там ещё что-то все это заброшено.
303: Все это кинуто. И ещё, кстати, тоже это интересный аспект. Знаешь, чем проще руби, почему, например, он может себя быть крутым по и даже на уровне многих крупных других экосистем, оставаясь при этом компактным, потому что почти везде огромная сегмента
304: Идёт. Назовите мне гошный фреймворк, который номер 1, и все им пользуются. Нет такого. Там есть там джин, который, кстати, забросили, или там самый популярный, но самый не развиваемый файбер, который там патчит аштитипи стек и своё че то там делает. Короче, ты куда не плюнь, у тебя везде
305: Это вакханалия у тебя там в ноде умер давным давно экспресс, но у тебя до сих пор все миделвары на нём, и там постоянно коннекторы какие-то, чтобы там плагины работали, миллиард фреймворков, которые каждый раз. Причём даже в бэке миллиард фреймворков, да и который там нёс джис, тут у тебя адонис, там ещё.
306: Че-нибудь каждый раз новое, каждый свою рем придумывает, каждый свою штуку. Самая стабильная джава. Вот из всего этого, из всего этого, из всей этой штуки спринг. И кстати, забегая вперёд. Собственно, мой выбор это спринг по этой причине, потому что они из всех наиболее близки к рельсе. Вот по
307: Такой консистентности, общей. Так вот в этом, собственно, проблема. А в рельсе, то есть у тебя получается как бы плюс и минус минус то, что вроде все сфокусированы вокруг 1 фреймворка все такие, ну как же разнообразие но на самом деле это классно, потому что сейчас
308: К счастью, у тебя идеи приходят. Тебе не нужен 2 фреймворк в твоём языке, чтобы черпать идеи. У тебя идеи приходят из других экосистем из ларавеля. Очень много из других экосистем, поэтому руби на этом не теряет. Хотя там, конечно, не хватает асинхронного какого-нибудь фреймворка, чтобы.
309: Там типа как fast апиай в пайтоне, подводя итог. При всей компактности очень сильная целеустремлённость и заточенность под 1 экосистему, что даёт очень сильно все интегрированное, работающее друг с другом и тебе гораздо меньше нужно прилагать усилий и
310: И тебе не надо думать о выборе. Кстати, вот тоже можно, да, свести рельса. Это если ты не хочешь думать, все остальные, это cell такой. Так че мне тут взять? Бери Джангу, бери Фаста пиай. У нас свои модели, а тут алхимия. А это вообще все фигня. Рест, фреймворк, давай возьмём.
311: И такой с ума сошёл. Это мы вынесем, знаешь, вот эти вот, как Ваня Ботанов делает фразы на обложке рельсы для тех, кто не хочет думать, давай как бы уже потихоньку подводить черту, если человек
312: Сегодня начинает карьеру то как описать, в каком случае ему вот стоит направить свой взор на руби и на рельсы. У меня есть совет, который был всегда, независимо от того, на чем вы пишите, просто пройтись по Гайду. Рейлс от начала до конца, сделать у них очень крутые гайды д.
313: От начала до конца сделать проект просто маст хэв, потому что люди даже вот он очень подробный, там прям ты роутинг то, се, 5, 10 создаёшь. Ты даже просто пройдя этот гайд, уже проникаешься большим количеством идей, концептов. Типа, о, а че так можно было что ли? Помните вот этот
314: Блок за 15 минут, который дичей показывал, когда он там всех, просто там все в шоке были в те года. Это же до сих пор так и осталось. Я просто помню, мы как-то это обсуждали ещё недавно кто-то посмотрел это видео прям буквально, может год назад и такой говорит, ну он там пишет то ли на год, то ли на чем говорит, у нас до сих пор, говорит, не
315: Нельзя с такой скоростью проекты делать, как он там показал в этом, в своём видео. Вот поржали на эту тему, поэтому это 1 аспект рельсу нужно хотя бы увидеть, потому что более интегрированного решения нет. Даже спринг Бут, несмотря на то, что вот я про неё говорю, он, он в друго.
316: В чем-то более интегрирован, но вот с точки зрения именно человеческого такого сайта, чтоб быстро не spring security, чтоб там умереть, а вот чтобы вот, знаешь, такой быстро аутентификацию накинул, там авторизацию через соцсети, где даже думать не надо, вот у тебя прям рельса, поэтому это маст хэв.
317: А дальше выбор очень простой. Вы делаете сайт в 1 харю, и вам надо вот, чтобы вот прям сайт быстро, чтоб все работало, и желательно такие, ой, а мне паспорт надо подключить. Ой, а мне надо письма отправлять. Ой, ещё что-то во всех остальных местах, со всеми остальными технологиями. Вы будете за
318: Заморачиваться 100% больше другой вопрос, что если вы скажете, да, я уже гошник. Ну, очевидно, как бы, будете, ну, больше заморачиваться, но вы, по крайней мере, в теме, если вы там вообще не в теме. Ну, рельса, хорошая история. Класс. И как ты думаешь, что будет
319: С рельсами дальше, учитывая, что с ними происходит. Вот по последним релизам. То есть какой вектор развития, куда это все приведёт мне? Ну, вообще, в целом, кстати, по релизам видно, что они вот оцениваются ещё больше. Там, например, полностью встроена работа с файлами. Это, кстати, очень удобн.
320: Круто, там все сторонние компоненты ушли, стали не нужны. Там например, сейчас есть редактор, который вот если ты block делаешь, или там статейник у тебя бам, там классный редактор. Сами, кстати, опять же, смотри какая интеграция. То есть, например, где вы ещё видели экосистему, в которой вы прям ставите
321: Редактор. Напомню, джейс кода нет вообще, вы его не пишите. Мы говорим про хотвайер и все остальное. Вы ставите редактор в админке, перетягиваете файлик, и он у вас сам в модельке, в бэке сохраняется, и вы вообще ничего не делаете. Но это magic, потому что у вас, у вас почему это работает? Потому что у вас есть active jobs.
322: Фигнёй, у вас есть фронтенд, который там сам все это прогружает. У вас есть active сторадж, который все это сохраняет там в с 3 куда угодно и так далее. То есть вот это все является такой вот концепцией, которая позволяет творить вот такие чудеса. А сейчас ещё они сделали подмену бэкендов. То есть вы можете ещё и разные редакторы.
323: Писать какой-то адаптер и, соответственно, другой редактор использовать, а фишки те же самые. Так вот, с точки зрения вот этой я смотрю на каждый релиз рельсы и там просто там тонны вообще изменений, тонны движений вперёд. Но при этом недавно вышла 4 рубя. То есть все стабильно, все идёт.
324: Рельса идёт стабильно как бы живём, никакого спада вот в этой точки зрения нет знаешь маленький нюансик, только добавлю диче делает очень классную штуку, я такого в других фреймворках не видел так так не делают вы знаете что когда-то coffee script взлетел во многом благодаря рельсе знаете почему?
325: Потому что его добавили в дефолтный сетап, то есть ты просто делаешь релс нью, и у тебя кофескрипт. Ну и прикиньте, че произошло у вас вот этот, во первых, тогда все, весь кофескрипт был в проектах на рельсе, и во вторых, появилась куча кофе скриптеров. Ну, потом это все стало неактуально, но
326: С тех пор все знают, что если, например, с точки зрения экосистемы, диэйчэйч видит, что вот эта часть имеет огромное значение, он делает очень простую вещь, он её просто включает в стандартную поставку рельсы. Че после этого происходит? Все комьюнити бежит развивать эту штуку. И вот таким
327: Образом, они балансируют в комьюнити, типа, вот когда ты спрашиваешь, типа, а че там с опенсорсом, кто че разрабатывает, вот так делает рельса, ну закольцовывая все это, как будто бы тезис в начале, что рельсы скорее мертвы, наоборот, как будто бы
328: Скорее, с каждым релизом все живее и живее. Это правда, да, то есть даже видно всплеск и что сейчас какой-то реинкарнация другой вопрос, что, конечно, час пик пройдён, и она просто вот ушла в свою некую нишу, которая, мне кажется, с экономич.
329: Подъёмом. Кстати, когда будет больше стартовать проектов, будет прямая связь между стартом проектов на рельсе и всем остальным. А Биктеев, да, им это не надо, им надо занять 150000 разработчиков на 1 проекте, там другие проблемы. Я думаю, что это
330: Если Женя не против, прекрасный конец нашего выпуска. Спасибо большое, Кирилл, что пришёл в гости. Вот очень мы подробно со всем разобрались. Получился такой настоящий, да, подлодка дип дайв.
331: В ruby on рейлс, жень, спасибо большое за 2 пилотирование, увидимся в другом глубоком погружении куда-то всем пока, пока, пока пока.