📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Is Ruby Dead? Absolutely Not. Why I Use Ruby and Rails in 2026

The Rubyist Way44:09

Transcription

Всем привет. >> Запись началась. >> О да, теперь мы можем начать так. Хорошо. Обычно я не пользуюсь микрофоном, но сейчас я как большая собака с микрофоном. Хорошо. Сегодня мы поговорим о фреймворке для одного человека, а также о приложении Pasabaya, которое я сделал один, к сожалению, пока нет, но я надеюсь, что оно будет больше для людей. Хорошо. Кто я? Я Ruben, разработчик Rails уже две недели. [смех] Да, на самом деле я открыл для себя Ruby год назад, и я разработчик Ruby и Rails уже две недели. Да, коммерческий опыт. Но я 5 лет был преподавателем информатики и от преподавания теории до выпуска кода. Да. Как я уже сказал, 5 лет, но когда я встретил Ruby, я решил: "О да, мне нужно перейти на Duko, потому что мне это очень нравится". Хорошо. Кстати, он также финишировал на полумарафоне прямо здесь. О да. О, это на моей велосипеде. Да. И это я. Это Манильский марафон. И я также готовлюсь к походу. У. Хорошо. Мы сейчас не говорим о порте, но мне там нравится еда. Большое спасибо. [смех] Хорошо. Пожалуйста, мы поговорим о фреймворке для одного человека. Почему это важно для меня, вы узнаете через несколько минут. Но прежде чем я начну, я хочу сказать вам, что фреймворк для одного человека — это стандартный подход Rails. Держите все просто с первого дня и продолжайте. Но используйте Turbo вместо сложных JS-библиотек, построения и т. д. Стандартный шаблон MVC, Active Record и т. д. Но я также понимаю, что некоторые технологии, некоторые шаблоны существуют просто потому, что они должны существовать. Да, прямо сейчас я работаю с компонентами White Ruby, Active Interaction, Rollifi, Device и т. д. И я понимаю, почему это здесь. Я понимаю, что это возможно, но я хочу сосредоточиться сейчас на фреймворке для одного человека, потому что это может быть что-то, что вдохновляет, это действительно вдохновляет, и прежде чем я продолжу, как вы знаете, DH всегда говорит о фреймворке для одного человека, но сколько именно людей должно быть в продукте, как вы думаете? Я смотрел его интервью год назад, он сказал: "Как вы думаете, сколько людей должно быть в заказе?" >> Зависит от этого. >> Да, он сказал один, два или максимум три, и вот когда я говорю о фреймворке для одного человека, думайте о том, что максимум это три человека, которые это делают. Мы не говорим о тысячах сотрудников, сотнях сотрудников, мы говорим всего о нескольких людях. Да, хорошо, давайте. Стройте для простоты. Да, я сделал приложение basabia, сохраняя кодовую базу простой, чтобы любой мог легко присоединиться, понять и начать вносить свой вклад. Чтобы начать, это буквально три команды: просто get cdah и pin setup, вуаля, вы можете использовать его благодаря фреймворку для одного человека. Я использовал подход Rails, который вы узнаете, почему он такой простой. Это база данных здесь, это кэш здесь, а также очередь здесь. Все здесь, но вам не нужно ее устанавливать. Она уже есть. Хорошо. Первый вопрос: ваш инструмент — прагматизм в первую очередь. Речь не идет о прославлении невежества. Конечно, понимание инструментов, которые мы используем, и почему они существуют, абсолютно жизненно важно, и, конечно, мы должны это делать. Но проблема в том, что большие парни сказали вам, что вы не должны делать что-то, пока не узнаете это, это, это, это и это. Вы слишком усложняете. Вы не хотите начинать, потому что не знаете как. Мне нужны годы, чтобы сделать "hello world". Нет. Хорошо. Бросайте вызов стандартам. Всегда спрашивайте, действительно ли вам нужна сложная абстракция сегодня, или вы просто слишком рано усложняете. И логическая абстракция. Каждая архитектура имеет свое место и назначение. Начинайте просто, масштабируйте абстракцию по мере того, как сложность естественным образом требует этого. Ничего страшного, если вы не используете фреймворк для одного человека, когда это необходимо, потому что иногда это действительно необходимо. И снова, я сказал вам здесь, я понимаю, почему у нас есть это, это, это и тестер. Это тоже приятно. Мы можем использовать это, и я думаю, что мы можем делать и то, и другое. Хорошо. И еще одно: быть новичком в экосистеме — это временная суперсила. Я сказал вам две недели коммерческой работы и год, как я знаю Ruby. Пока вы можете смотреть свежим взглядом, вы видите реальные трения, которые другие годами игнорировали. И я здесь свежий. Да, я новичок, и я вижу что-то новое для себя. Например, вы уже знаете Ruby годами, возможно, даже больше, и у вас уже есть некоторые предубеждения о ней, например: "О, это новичок, но у меня нет этих предубеждений. Я пытаюсь, и я удивляюсь: "Вау, это потрясающе", потому что у меня нет проблем. Когда я рассказываю людям о Camel, я всегда говорю о Camel, они говорят мне: "О, я пробовал Camel один, это было действительно плохо". Я не пробовал Camel один, это уже Camel, который существует, и ошибки исправлены. И для меня это "вау, потрясающе", потому что я никогда не прикасался к этой бажной версии, которая была. Да, у меня сейчас есть эта временная суперсила. Хорошо. Мы говорим о фреймворке для одного человека, но не только в Waku. Я сделал приложение Pabaya. Это логотип. Моя жена сделала его, Натали. Большое спасибо, Натали. Это QR-код, который вы можете отсканировать, и вы можете открыть его на своем смартфоне. В будущем я также буду использовать Hotwire Native для создания мобильного приложения. Но сейчас мы говорим о веб-сайте, и я просто хочу показать вам, как он выглядит. Хорошо, он уже там. Это карпулинг для сообщества, не для прибыли. И я не хочу тратить много времени, чтобы показать вам, как им пользоваться, почему я его сделал, потому что он там. Вы можете просто открыть Pass и посмотреть это видео всего за 15 минут, что-то вроде того. Да, 14 минут. И все здесь. Я просто хочу показать вам, что я сделал, и что у нас есть. Хорошо. Во-первых, это карпулинг для сообщества, не для прибыли. Это означает, что я сделал его с открытым исходным кодом, и каждый может внести свой вклад. Это страница GitHub, и я постарался сделать действительно понятные инструкции о том, как запустить проект локально, и, как вы видите, просто клонируйте репозиторий, запустите скрипт настройки, вот и все. Большое спасибо. [смех] Да, я имею в виду, что это фреймворк для одного человека, но опять же, я иду слишком быстро. Мне нужно сделать шаг назад. Хорошо, я здесь. Что это? Хорошо, у нас есть этот поиск. Давайте нажмем на него. И сейчас там есть какая-то карточка. Это уже существующий пользователь. Спасибо им. Они действительно пытаются разместить здесь объявления, и у нас есть предложения, а также есть запросы. Это я. [смех] Да. И на самом деле это просто доска объявлений. Если мне нужно куда-то поехать, я не знаю, например, из Тага в Багио, это невозможно, но я сделал это. Хорошо, ищу запросы, и у меня есть моя карточка здесь. Если вы нажмете "Показать", да, вы можете просто открыть эту карточку. Вы можете прочитать и перейти на Facebook. Да, я сделал кнопку ссылки на Facebook здесь, потому что я думаю, что очень важно обеспечить безопасность моих пользователей. По крайней мере, мы знаем, кто наши пользователи. Поэтому я не хочу реализовывать там никаких чатов, потому что я надеюсь, что это может предотвратить мошенников. Хорошо, но это все. Я не буду показывать вам, как им пользоваться. Я просто хочу показать вам, что это CR-приложение. Вы можете создавать, читать, редактировать и удалять, и все здесь, и это работает. Вернемся к нашей презентации. Во-первых, почему я здесь? Да, почему Ruby? Как я уже упоминал, я работаю преподавателем информатики 5 лет, и я открыл для себя Ruby год назад, и это изменило мое мышление. Это что-то новое, о чем мы можем подумать, как писать код, и самое главное — это не потому, что "о, это красиво". Да, это красиво, мне нравится. Это как объектно-ориентированный язык, да, конечно, это хорошо. Но самое главное для меня — это то, что почти все участники экосистемы Ruby думают о важном, важном, важном. Это мантра: "простое должно быть простым, сложное должно быть возможным". Да, и это вы можете найти почти во всем в экосистеме Ruby: Sinatra, ROA, Bridgetown, Hanami и т. д. Их много, и все они пытаются сделать простое простым. Простое должно быть простым. Сложное должно быть возможным. Но почему я говорю о Rails? Да, мне не нравится, когда люди говорят о Rails, когда говорят о Ruby. Вы знаете, это кажется так: "О, у нас нет ничего другого в Ruby. Сам язык программирования Ruby". Почему мы делаем Ruby равным Rails? Но на самом деле Rails — это крупный игрок. Да, управление сложностью, быстрая разработка, прагматичный подход, и, возможно, в будущем я попробую Hanami, я не знаю, но я никогда не пробовал его сейчас. Хорошо, перейдем к тому, что такое фреймворк для одного человека. Это не то, что я сделал. Нет, DHH пишет об этом в блоге. Вы можете отсканировать, вы можете прочитать, но здесь пять столпов. Основная миссия — предоставить одному разработчику, опять же, всего трем разработчикам. Да, набор инструментов, достаточно мощный, чтобы создавать, запускать и развивать высококонкурентное современное веб-приложение без необходимости в огромной команде специалистов. Следующее: концептуальные сжатия. Абстрагирование сложных многоуровневых технических проблем в простые управляемые инструменты, позволяющие одиночному создателю получать огромные результаты, не нуждаясь в освоении каждой микроспециализации. Но иногда это необходимо. Да. И вы углубитесь, когда это потребуется. Но чтобы начать, не нужно действительно глубоко копать, чтобы сделать "hello world", вы знаете, не для чего. Обход сложности JS, устранение тяжелой фабрики JavaScript-экосистемы, Node, сложный бла-бла-бла-бла, такой как Hotwire, Stimulus и Turbo. Это то, что действительно очень мощно для небольшой команды. Встроенная мощность, предоставление нативных, тяжелых функций непосредственно в рамках, таких как шифрование данных, да, сессии, тесты. Да, у меня просто снова есть пользователи, и я на самом деле не касался того, как работают сессии, или как выполнить вход или сброс пароля, потому что это просто генератор Rails, он просто там. Я просто набираю rails notification generate rails gification, бум, он там. Это действительно хорошо, и мой пароль зашифрован, и как он зашифрован? О, это действительно хорошо, потому что он даже не дал. Хорошо, я углубляюсь сейчас. Не нужно. Хорошо. Следующее: эффект червоточины, действующий как ярлык, который сокращает время между изучением инструмента и выпуском реального продукта. Да, это так захватывающе, потому что дает независимым аутсайдерам шанс бороться с тяжело финансируемыми инженерными командами. Снова, чтобы сделать что-то простое. Не нужно быть настоящим профессиональным инженером. Да, это не ракетостроение. Но вы можете быть настоящим инженером, вы можете быть супергероем. Но чтобы начать, не нужно, это будет в будущем, когда это будет новым. Хорошо. Это о фреймворке для одного человека. Этот парень, он создал здесь компанию, Джек, и вы также можете посмотреть это видео, если хотите, на YouTube. Это как команда из четырех человек, что-то вроде того, они создали действительно большой веб-сайт, и они работают. Хорошо, вы можете просто посмотреть на YouTube. Что, если фреймворк для одного человека? Мы понимаем сейчас, что это философия, но философия без практики — ничто. Да, давайте подумаем о Rails 8.1. У нас есть SQLite, готовый к производству. У нас есть Camel, Hotwire и Solid Strike Factor. И сегодня я покажу вам все из этого в моем проекте. Во-первых, SQLite. Это что-то, что было неправильно названо. Что я имею в виду? SQLite звучит как "легкая игрушка". Что это? Нет, нет, "легкий" означает, что он легче, это не значит, что это игрушечные инструменты. Нет, потому что "легкий" сейчас может быть действительно, действительно, действительно мощным, если вы правильно его настроите. В Rails это уже сделано, он уже настроен. И, конечно, у него есть ограничения, и PostgreSQL, MySQL или другой будет намного быстрее. Но сначала, возможно, вы переключитесь, когда это действительно понадобится, потому что SQLite может обрабатывать сотни, сотни чтений, тысячи, я имею в виду, в секунду, и это нормально, все еще нормально, миллисекунды. Только если ваше приложение уже имеет 1 миллион записей в секунду и сотни миллионов чтений, вау, вам повезло. Да, вам нужно что-то другое. Далее, Solid Trifecta. На самом деле в Rails. Да, у нас сейчас в 8.1 есть Solid Trifecta. Это Solid Cache, Solid Cable и Solid Queue. Хорошо, кэш и кабель. Что это? Вы можете просто использовать свою базу данных и SQLite. В нашем случае он уже настроен, предварительно сконфигурирован для кэша, для очереди и для кабеля. Кабели, например, для WebSocket, например. Да. И просто если вам нужно что-то кэшировать, вы можете использовать свой SQLite, потому что сейчас наш SSD действительно быстрый. Конечно, он не быстрее, чем RAM, но просто подождите. Возможно, не нужно использовать Redis или Memcached или что-то подобное, пока это действительно не понадобится. Когда у ваших пользователей уже возникнут проблемы, возможно, когда ваши пользователи ждут секунды, чтобы открыть что-то, пришло время изменить ваш стек. Но сейчас, если у вас всего сотни тысяч пользователей, а не миллионы, возможно, не нужно усложнять. Хорошо, кэш. Вы можете просто кэшировать. Если у вас есть что-то, что вам нужно кэшировать, вы можете это сделать. Очередь работает автоматически, и кабель тоже, благодаря SQLite, он уже там, и он уже предварительно сконфигурирован. Далее Camel. Это то, что вы можете использовать для развертывания, и я покажу вам, как это работает. Это так потрясающе. Это безумно легко. И это действительно быстро, потому что все, что вам нужно, это ваш компьютер. >> Да. И Hotwire. HTML поверх провода. Эй, что случилось? >> Вы хотите задать вопросы в конце или по ходу? >> Прошу прощения. >> Вы хотите, чтобы мы задали вопросы в конце или по ходу? >> Да, можете. Задавайте по ходу. >> Угу. Так это ваши >> Итак, презентация, которую вы сегодня проводите, это стандартные настройки Rails или те, которые вы выбрали? Например, >> Да, это действительно хорошо, потому что просто когда вы делаете Rails new, мое супермощное приложение, оно уже там. SQLite, Solid Cache, Solid Cable, Solid Queue, и просто когда мы используем Rails Helpers для кэширования или отправки писем, например, отправки позже, да, это уже работает там. Он не отправит электронное письмо напрямую, потому что у меня есть письма здесь, и для меня как для разработчика это было просто "dot later". >> И очередь работает под капотом. >> И тогда все, о чем вы говорите, это стандарт, который встроен, это "батарейки в комплекте". Это то, о чем ваша презентация? >> Прошу прощения. >> О, так все в этой презентации уже встроено в Rails, как будто оно уже включено по умолчанию? >> Да. Да. Просто это уже Rails 8.1, когда вы создаете новое приложение, SQLite и Solid Cache, Cable и Queue уже там, уже сконфигурированы. Не нужно ничего делать, чтобы использовать это. Оно уже там. >> Отлично. >> Да, это действительно круто. И самая крутая функция здесь, когда вы будете развертывать, Camel также предварительно сконфигурирован для использования. Это действительно хорошо. Хорошо. И Hotwire. Я знаю, некоторые люди говорят, что Hotwire устарел. Некоторые люди хотят сказать, что нам нужно использовать что-то другое, потому что нам нужно использовать действительно тяжелые JS-библиотеки, такие как React, Vue и т. д., Angular. Но Hotwire — это то, что может позволить небольшой команде из трех человек создать ощущение SPA для вашего приложения, не написав много JavaScript-кода, и я вам это покажу. Далее. Когда Rails позволяет вам обучать дополнительную инфраструктуру. Да. Например, управление Redis, Nginx, затем кэш-серверами, просто используя Rails Solid Trifecta с вашей базой данных, и она уже предварительно сконфигурирована. И снова SQLite. Это база данных, которая просто файл, и это означает, что не нужно использовать выделенный сервер для вашей SQL-базы данных. Не нужно настраивать контейнер Docker, что-то вроде этого. Нет, он просто здесь, это файл. И снова одна важная вещь. Иногда, даже если вы делаете, если у вас есть c, вы пытаетесь протестировать SQLite в PostgreSQL, например, и вы можете обнаружить, что для этого конкретного теста SQLite намного хуже, чем PostgreSQL. Но подумайте также о задержке. Да, у нас есть сетевая задержка. Возможно, очень быстро рассчитать, но SQLite не успевает доставить это в ваше приложение, потому что оно уже там, это файл, просто нужно прочитать, просто нужно записать файл. Нет времени для отправки данных туда и обратно. И также еще одна вещь о SQLite. О боже. Есть Lightstream, который вы можете реплицировать ваш SQLite на другие серверы по всему миру, везде, вашим пользователям. И это безумие. Он просто будет реплицировать вашу базу данных каждые 10 секунд, и ваши пользователи по всему миру будут иметь обновленные данные. И это безумие, но я не хочу углубляться. Хорошо, снова, я сказал вам, ребята, снова здесь на YouTube, в Zoom, где вы, ребята? Я просто открыл дверь. Да. Например, о, мы можем реплицировать в SQLite. Мы можем сделать что-то, бла-бла-бла. Это то, что вы можете сделать, если хотите. Но чтобы начать использовать это, просто сделайте Rails new. Вот и все. [смех] Давайте. Как запрос проходит через ваш стек. Вот как работает мое приложение прямо сейчас. Это mootakim.com. Я не знаю, кто они на самом деле, но этот гид почти как мой [смех] стек, но я использую вместо Head там VPS. Любой может использовать. В моем случае это Oracle, потому что они дали мне действительно сумасшедшую бесплатную пробную версию. Да. И вместо использования резервных копий Header я использую Camel Backup. Да. Но остальное работает так же. И также SSL. Я использую Let's Encrypt, который находится в прокси Camel. Снова, когда вы делаете развертывание Camel, это команда CLI для развертывания. Camel зайдет на ваш сервер через SSH, установит Docker, если Docker нет, установит Scream, автоматически создаст SSL-сертификат и автоматически обновит ваш SSL-сертификат и т. д. Он уже там. Но давайте перейдем сюда. У меня есть SPLI, а также у меня есть Actor Storage, потому что у меня сейчас есть аватары. Но в будущем я хочу расширить возможность описания и выполнения некоторых заметок, таких как добавление фотографий и т. д. И Lightstream. Вот как вы можете реплицировать, а также некоторые резервные копии для ваших баз данных SQLite. Хорошо. И все это здесь в Rails 8. Solid Goo, Solid Cache, Solid Cable. Это автоматически работает с вашим приложением, браузером клиента или API-запросом. Cloudflare. Здесь прокси Camel. Там, это просто работает. Я имею в виду, что если вы хотите создать веб-сайт, закройте это видео и просто сделайте это. Вы узнаете это позже, когда вам нужно будет развернуть. Вы узнаете, как настроить ваш файл YAML. Не думайте о прокси-кластере, пулах 8, пока это не нужно думать об этом, пока это действительно не понадобится. Хорошо, давайте дальше. Я сделал это. Это действие. Хорошо, теория достаточна. Я хочу показать вам действие. Это моя карточка здесь. Я вернусь и смогу отредактировать профиль, и здесь я и моя жена. Мы переезжаем из вертикали. Да. И вы можете выбрать аватар, а также изменить свой адрес электронной почты здесь. Вы можете изменить пароль. Вы можете удалить учетную запись, если вам это нужно. И я просто хочу показать вам одну вещь. Я сделал это, возможно, неделю назад, и отправил своему другу, который работает с React и Java. Хорошо, он большой парень. [смех] Знаете, когда я сказал ему, что "о, знаешь, я хочу использовать Ruby, потому что я нашел его действительно хорошим", он сказал: "Ruby? Хорошо". И давайте подумаем. Я отправил ему: "Хорошо, мы говорим по-русски, но я просто перевел: "Следующий план — сделать так, чтобы если форма заполнена неправильно, вся страница не перезагружалась, а обновлялась только сама карточка формы, как на современном веб-сайте, чтобы сделать ее красивой". Хорошо, потому что сейчас, посмотрите на это, когда я ввожу здесь текущий пароль, новый пароль и снова обновляю пароль. Это уродливо. Это перезагружает мою страницу, и я наверху, и мне нужно вернуться, и это здесь. Да, во-первых, спасибо Rails, что это работает автоматически, почти. Я просто обрабатываю ошибки, любые ошибки, да, вы знаете, и также флэш-карты и т. д., но это уродливо, и я просто хочу сделать это более современным. И я отправил ему, что он ответил: "Кажется, это может быть сложно". Да, подождите несколько минут, я покажу вам кое-что. Хорошо, он сказал: "Кажется, это может быть сложно". Хорошо, давайте посмотрим, как вы можете это сделать, потому что то, что я покажу вам, уже встроено в Rails 8, даже не нужно устанавливать какую-либо зависимость, что-то вроде этого, оно уже там. Хорошо, я поставлю свой микрофон сюда, и надеюсь, что все меня хорошо слышат. Прежде всего, я просто хочу доказать, что это действительно работает, как я вам говорил, что легко начать что-то делать и вносить свой вклад в Pasabaya. Хорошо, я просто хочу использовать эту HTTP-ссылку прямо сейчас, потому что я не хочу использовать SSH-инструмент, но вы можете использовать любой способ клонирования репозитория. Просто спуститесь сюда, pretty proud, Linux или Windows с WSL. Просто не используйте ничего другого в своей Windows. Если у вас есть Windows, пожалуйста, используйте WSL. Хорошо, вам нужен Ruby 4, вам нужен Rails 8, и вам нужен get, если у вас его нет. Я надеюсь, у всех он есть здесь. Я не верю, что у вас его нет. Я не верю, что он установлен на вашем компьютере, возможно, другая версия Rails, возможно, Ruby, но он у вас есть. Но если у вас его нет, просто следуйте руководству по установке Ruby on Rails. У меня уже есть, и я использую mice. Мне очень нравится mice. Снова, я новичок. Да, я прошу прощения, я новичок, я новичок. Я знаю, что есть другая версия инструмента, который вы можете использовать для управления версиями, но mice работает очень быстро, и он автоматически понимает, какая версия Ruby нужна. Он автоматически меняется, и это как "О, мне это очень нравится". Это как снова, вам нужно знать это, когда у вас возникнет проблема, но чтобы начать, я просто использую действительно mice. Используйте G Ruby 3, он установлен. Но если я скачаю проект, которому нужен Ruby 4, mice автоматически сообщит мне, что "О, у вас другая версия, просто установите ее". Я устанавливаю ее, и она уже разделена автоматически. Хорошо, давайте. Просто клонируйте репозиторий. Хорошо, давайте сделаем это. Я открою Gusty здесь, и просто get clone. Упс. Хорошо. >> О, хорошая ошибка. Я просто сделаю свой доверие так. Хорошо, больше нет ошибок. [смех] И дальше, просто сделайте bin setup, и о нет, нет, подождите, здесь bin setup. Посмотрите на это, я просто копирую и готовлю базу данных, заполняю локации, семена завершены, запускаю сервер разработки, и эй, это было намного быстрее раньше. Почему это так тормозит сейчас? Хорошо, это просто здесь. Я не знаю, почему это работает так медленно сейчас, но это здесь. Мой localhost, а также давайте сделаем поиск. Везде есть карточки, пользователи. Это работает из коробки. Снова, это новый g clone, конечно, у меня есть зависимости, они уже установлены, но что это? Rails, Ruby, это все. Потому что это легко, даже не нужно устанавливать, оно автоматически там. Снова, не нужно устанавливать и предварительно настраивать ваш PostgreSQL или Redis или Memcached. Оно уже здесь. И снова, у меня 10 пользователей. Зачем мне PostgreSQL, зачем мне Redis, Sidekick, что-то вроде этого? О боже, 10 пользователей, действительно. [смех] Хорошо. Просто это работает. Вернемся к нашей проблеме. Я сказал ему, что "знаете, я хочу сделать это красивым, когда это неправильно". Я просто хочу показать проблему здесь, не перезагружая страницу. Кажется, это может быть сложно. О, действительно. Давайте посмотрим, как это работает. Хорошо, я закрою свой сервер здесь. И также я хочу открыть свою фактическую базу данных, прошу прощения, исходный код моего приложения для карпулинга, потому что я хочу исправить это и просто развернуть автоматически. Я хочу показать вам, как это легко, когда вы используете философию фреймворка для одного человека. Хорошо. Давайте проверим, что это действительно не работает, как я хочу. Хорошо, просто сделайте что-нибудь неправильно здесь. Здесь. Здесь. Обновить пароль. Да, это не чувствуется так, как я хочу. Хорошо, давайте откроем мой код. Мне нужно открыть RubyMine. Мне нравится. И RubyMine, пожалуйста, открой. Да, хорошо. О, я знаю, почему это так медленно. Мне нужно отключить режим низкого энергопотребления. Это будет намного быстрее. Хорошо. Это мой проект снова. Это открытый исходный код, и одна вещь, которую я не показал в своей презентации, это то, где я сохраняю свои кредиты для, я имею в виду, где я сохраняю эту важную вещь для Mailtrap для отправки электронной почты, где я сохраняю пароль для подключения к моему, хорошо, тестеру. Это здесь. Также это встроено. Это называется Rails Secrets здесь в Camel. Я хочу показать вам, я могу показать вам мои секреты для Camel. Вы знаете почему? Потому что если вы прочитаете здесь, например, AWS Secret Access Key. Я просто использую Rails Credentials и получаю данные из моих файлов Rails Credentials. Но где файл Rails Credentials? Вот здесь. Просто зашифруйте его. Я отправлю его в свой репозиторий, и все, кто захочет стать сотрудником [смех] в будущем, возможно, да, мне просто нужно дать мастер-ключ, и, конечно, это действительно плохо, когда у вас сотни сотрудников, даже если у вас десятки. Подумайте о том, что я сказал, когда я начинал. Один, два, три. Один, два, три. Подумайте, есть ли у вас хотя бы два человека, которым вы можете доверять, чтобы дать мастер-ключ? Да, я думаю, что есть. И я имею в виду, что это не что-то, но, конечно, снова, две недели назад я стал коммерческим разработчиком, и у нас есть один пароль, и мы используем один пароль. Я понимаю, для чего, но я также понимаю, почему он у нас есть. Хорошо, давайте. Мне нужно увеличить. Да, потому что уже время. Давайте сделаем это быстрее. Будучи разработчиком, я просто хочу запустить свой сервер. Хорошо. Хорошо, я запускаю свой сервер. Я хочу открыть его здесь. Хорошо. Да, там мой локальный, и просто снова, извините, мне нужно запомнить это. Зачем мы здесь? [смех] Мои друзья сказали мне, что кажется, что сделать SPA, заполнение формы, может быть сложно. Хорошо, давайте сделаем это. Уже время. Я просто открою свой application.html.rb здесь, и просто здесь, в application.html. Хорошо, я просто должен подключить одну вещь. Я буду использовать Rails Helper. О, не так. Здесь. Хорошо. Turbo refresh с методом. Хорошо. Метод больше. Хорошо. Комма. Хорошо. Я сделаю это так. Да, потому что некоторым людям может быть трудно читать так. Хорошо. Turbo V — это метод morph, а также scroll, потому что я не хочу, чтобы при обновлении он поднимался вверх. Хорошо. Scroll preserve, preserve. Я надеюсь, что это правильное написание, вы знаете, как я надеюсь. Давайте посмотрим. Мне просто нужно открыть свой веб-сайт снова. Здесь, он там. Давайте перейдем к нашему пользователю здесь. Редактировать профиль. Текущий пароль неправильный. Новый пароль неправильный. Подтвердить новый пароль неправильный. Обновить пароль. Это здесь. Это работает. Что я сделал? Turbo refresh с методом morph, scroll preserve. Действительно? Как это работает под капотом, я еще не знаю. Еще, когда что-то происходит, мне нужно открыть документацию и выяснить, почему это не работает. Но когда это произойдет, я буду готов к этому. Да. [смех] Потому что сейчас снова, я открыл Ruby год назад. Я начал изучать Rails, может быть, пять или шесть месяцев назад. И всего две недели коммерческой работы, я имею в виду, я новичок здесь, и просто продолжайте. Хорошо, просто шаг за шагом, и я хочу, чтобы моя речь, моя ключевая речь вдохновила что-то здесь внутри, потому что сейчас то, что я чувствую, я CS educator, у меня были студенты. Что они чувствуют? Это слишком сложно. Все говорят вам, что вы должны быть действительно умными, чтобы начать что-то делать. Нет, вы не рождаетесь умными. Вы становитесь умными. Вы не рождаетесь старшим разработчиком. Вы становитесь старшим разработчиком. Вы не рождаетесь преподавателем информатики. Я стал преподавателем информатики. Конечно, я помню свои уроки информатики в школе. Иногда это было действительно скучно, и я ничего не понимал. Ничего. Это нормально, просто потому, что я не родился с этими знаниями. И это то, что мне нравится в экосистеме Ruby on Rails. Простое должно быть простым, сложное должно быть возможным. Да, и, пожалуйста, последнее. Я исправил это. Да, я для вас исправил это. И это было, как бы вы сказали, "кажется, это может быть сложно". Да, пока, с вашим Java и React. Я в порядке. Я в порядке. Он создал действительно большой проект. Нет, нет, его проект действительно огромен, и у них много слоев, бла-бла-бла-бла. Как он потратил один месяц только на настройку своей среды. Да. Да. Я имею в виду, конечно, у него действительно большой. Это не просто "да". CD, настройка. Хорошо. Давайте сделаем это. Как это работает. Это там. Turbo 8 Release. Вы можете отсканировать его и посмотреть. Turbo 8 Introduction: Morphing для плавного обновления страниц. Как два года назад они сделали это, уже встроено в Rails, но оно было отключено. Что включено в Turbo 8? Prefetch. Turbop prefetch — это когда вы наводите указатель на ссылку, он автоматически отправляет запрос на сервер, и это делает загрузку страницы намного быстрее. И также они представили morphing в Turbo 8, но он все еще не работает автоматически. Его просто нужно включить, но он уже там. Далее, демонстрация обновления страницы с morphing. Почти спасибо. Да, но подождите. Я сказал вам, что хочу отправить это в свою фактическую базу данных, на свой веб-сайт. Хорошо, еще несколько минут. Хорошо, давайте сделаем это снова. Я хочу доказать вам, что это еще не работает. Все еще. Это приложение Pasabaya здесь. Оно там. Просто сделайте его неправильным. Здесь. Здесь. Обновить. Это не работает. Хорошо, давайте. Что мне нужно сделать в первую очередь? Вам просто нужно сделать коммит. Хорошо, я понимаю. Вы можете прочитать это здесь. Да, это должно быть. Я перемещу это. Хорошо. Вид. Переместить вниз справа. Нет, я хочу справа вверху. Хорошо, давайте посмотрим. Я просто очищу это. Сначала нужно сделать коммит. Хорошо, я использую lazy g, потому что я ленивый. Да. [смех] Хорошо, я просто сделаю. Я не знаю, добавлю SPA-подобное ощущение. Простите, я действительно плохо пишу некоторые слова. Я не знаю, как сказать "ощущение". Вы можете мне помочь? Ощущение? Нет. >> f e >> f e >> f e e e e e e e e e e e e e e e e e e e e e ощущение, как это? >> Хорошо, спасибо. [смех] Хорошо, просто сделайте это. Хорошо, здесь у нас есть коммит, и просто сейчас мне нужно сделать camel deploy. Camel deploy. Хорошо, что там произошло? Хорошо, он пытается сделать образ. Хорошо, ему нужен пароль. Хорошо, здесь. Хорошо, давайте посмотрим, сколько времени мне нужно. >> Угу. Он ожидает здесь. Экспорт в образ. Прошу прощения, я знаю, что это очень медленно. Я хочу помочь вам читать это проще, но да, это большой экран здесь. Сейчас он экспортируется в образ, и просто когда он закончится, когда у меня уже будет образ здесь, снова, он работает здесь локально на моем ноутбуке. Сейчас у меня есть Docker, и это прямо здесь, только на моем компьютере. Я никуда его не отправлял. Хорошо, введите здесь. Мне нужен пароль. О, подождите. О, да. Это касается ввода парольной фразы для пользователя, пользователя SSH Oracle. Если вы украдете мой SSH без пароля, вы не сможете использовать [смех] его. Да, я предотвращаю эту проблему. Вы можете попытаться украсть его, но он зашифрован. Но, пожалуйста, не крадите, потому что я не хочу делать новый. [смех] И теперь он запускает Docker pull из моего GitHub. Хорошо, он отправляет образ на мой GitHub. И давайте сделаем, давайте сделаем еще несколько вещей, пожалуйста. Я могу выпить кофе, но у меня нет кофе. Я выпью воды. О, это сделано. Закончено все за 113 минут. Действительно? Оно уже там. Давайте проверим. Давайте обновим. Хорошо. Вау, оно уже работает. Смотрите. Я имею в виду, я имею в виду, что я развернул что-то. Оно уже здесь. Давайте сделаем это неправильно. Вот так. Вот так. [хрюкает] Так. Вот так. Пожалуйста, работай. Оно работает. Да. Снова, это фреймворк для одного человека. Это то, что может быть так вдохновляюще для новичков, таких как я, кто просто хочет начать изучать что-то и делать реальные вещи, особенно с ИИ, потому что я использую ИИ в этом проекте. Но по сравнению с другими вещами, я понимаю, что сделал ИИ здесь. Я могу это прочитать, я могу это отредактировать, и я могу этим управлять. Я могу работать с этим, потому что это не просто абракадабра. Хорошо. И спасибо вам большое. Если вы используете другой стек, это нормально. Все стеки существуют для выполнения конкретных задач. Но я просто хочу показать вам, как Rails 8.1, это текущая версия сейчас, может быть настолько продуктивным и настолько простым для начала работы с философией фреймворка для одного человека в вашем сознании и использовать просто подход Rails. Если вы не будете бороться с ним, если вы просто скажете "хорошо, я попробую", вы увидите, что это так круто. Спасибо. Спасибо. Спасибо. Спасибо.