Почему мы выбираем Ruby для наших проектов
В отношении языка Ruby есть ряд предубеждений и мифов. Есть даже устоявшаяся фраза «Ruby мёртв», которую в разговоре об этом языке обязательно скажут те, кто понимает его лишь поверхностно.
Технический директор компании Evrone Александр Кириллов, выступая на Meta/сonf в Воронеже, объяснил, почему Ruby является современным и актуальным языком.
Мифы о Ruby
Некоторые технические особенности языка во время его становления привели к тому, что сформировалось два мифа:
- Ruby медленный.
- Проекты на Ruby сложно масштабировать.
На заре существования язык действительно имел проблемы с производительностью и уступал PHP и Python. Но последние версии практически исправили этот недостаток, а будущие обновления должны добавить и новые возможности вроде работы с параллельными потоками. Сейчас медленно работающее приложение на Ruby — не столько проблема языка, сколько вопрос правильного построения архитектуры приложения и уровня знаний разработчика.
Чем больше становится проект, тем сложнее с ним работать и тем медленнее обрабатываются какие-то вещи. Действительно, на пике популярности языка можно было наблюдать на проектах проблемы с масштабируемостью. Но это было связано с тем, что в Ruby приходили разработчики из других технологий и приносили с собой какие-то привычки, усвоенные при работе с другими языками, или выполняли задачи не оптимально.
Последнее время идет переход на микросервисную архитектуру, которая позволяет писать каждую часть приложения, используя наиболее подходящий язык. Если микросервис не сильно нагруженный, то он не будет потреблять большое количество ресурсов и будет довольно быстро работать.
Кеширование, денормализация данных и правильная архитектура позволяют писать на Ruby и сильно нагруженные сервисы. Конечно же, все зависит от конкретной задачи, и микросервисы могут разрабатываться на языках, наиболее подходящих для ее решения.
Что делает Ruby on Rails классным
Есть еще одно мнение: язык уже старый и покидает мир разработки. Но приверженцы такой позиции зачастую просто не обладают информацией, которая позволяет признать язык и фреймворк развивающейся и до сих пор актуальной технологией.
Модель MVC
Ruby on Rails одним из первых начал использовать схему разделения компонентов приложения Model-View-Controller (MVC), которая значительно ускоряет цикл разработки и позволяет оперативно исправлять ошибки, быстро реализовывать бизнес-требования в проекте и вносить в них изменения.
Фреймворк пропагандирует «соглашение поверх конфигурации». Это дает однообразность структуры и архитектурных принципов проектов, написанных с его использованием, что обеспечивает сохранение одинаковых подходов к разработке из проекта в проект.
Если в команде случится ротация или придут новые специалисты, единообразие подхода позволит им быстро влиться в проект, а бизнесу — сократить время и снизить стоимость подключения новых разработчиков.
Базы данных
Когда ведется работа с базой данных, например с Postgresql, Active Record (ORM, используемая Ruby on Rails) позволяет абстрагироваться от текущей БД на более высоких уровнях. Это дает возможность писать практически одинаковый код под любую поддерживаемую базу данных.
Фреймворк работает со всеми популярными SQL-базами данных, благодаря чему можно сосредоточиться на реализации бизнес-задач, а не заниматься написанием огромного количества низкоуровневых SQL-команд.
Шаблоны
Ruby on Rails также поддерживает шаблонизаторы для веб-разработки, ускоряющие создание шаблонов для фронтенда. Самостоятельно писать HTML-код без помощи автоматизированных генераторов сложно, долго и дорого, поэтому фреймворк работает со множеством шаблонизаторов:
- ERB,
- HAML,
- SLIM,
- Liquid.
Деплой и тестирование
Чем больше бизнес-логики в приложении, тем сложнее обновлять его до актуальной версии. В Ruby есть инструменты, дающие возможность провести обновление одной командой, описав на Ruby все стадии развертывания. Система автоматизации сделает все остальное.
Чтобы следить за качеством кода, в экосистеме языка есть инструменты, позволяющие покрыть тестами все области написания кода, начиная от юнит-тестирования и заканчивая интеграционным. С Ruby on Rails можно использовать следующие инструменты:
- Minitest,
- Rspec,
- Capybara,
- Cucumber.
Развитие Ruby on Rails
Каждый месяц и каждый год для Ruby и фреймворка Rails выходят новые обновления и исправления. Сейчас уже доступна шестая версия Ruby on Rails, в которой представлены:
- возможность параллельного тестирования;
- поддержка работы с несколькими базами данных;
- автоматизация работы с письмами;
- инструменты для взаимодействия с фронтенд-технологиями;
- встроенная система организации хранения пользовательских файлов.
Большая часть изменений и улучшений связана с теми требованиями, которые предъявляют к языку разработчики, решая те или иные задачи.
К примеру, для хранения пользовательских данных существует множество инструментов, созданных сообществом. Разработчики Ruby, понимая, что такие инструменты пользуются спросом, реализовали необходимые возможности на уровне языка.
Технология развивается и силами сообщества. По статистике GitHub, Rails имеет больше всего контрибьюторов, принимающих активное участие в улучшении проекта, среди фреймворков других языков.
Чем больше контрибьюторов, тем выше вероятность, что запрос на улучшение или на исправление ошибки будет реализован быстрее и это не придется делать внутри команды, тратя время разработки проекта.
Поэтому, выбрав язык Ruby и фреймворк Ruby on Rails для создания нового проекта, вы получите большое и активное комьюнити, огромную экспертизу, полноценные процессы и возможность быстро скорректировать работу над приложением. Язык, и фреймворк, и Evrone в этом полностью помогут.
История Ruby
История этого языка началась более 20 лет назад, когда он был представлен независимым программистом Юкихиро Мацумото.
В 2003 году компания 37Signals выпустила систему управления проектов Basecamp. Она стала очень популярной в США и Европе, разработчики начали присматриваться, изучать, на каком стеке технологий она создана. При работе над Basecamp родился фреймворк Rails. В 2004 году 37Signals опубликовала этот фреймворк в открытом доступе.
Благодаря возможностям, которые дает фреймворк, язык начал набирать популярность. В 2006 году Ruby занял первое место в рейтинге языков Tiobe и пробыл на лидирующей позиции 2 года.
Язык начал применяться в крупных проектах. На нем были написаны сервисы Airbnb, GitHub, первая версия Twitter. Потом социальная сеть пошла другой дорогой, но часть инфраструктуры так и осталась на Ruby. Кроме Rails, появились другие фреймворки — Hanami и Sinatra.
Про руби говорят что он мертв в сравнении с другими языками. Вы просто взяли и описали тулкит и инфраструктуру языка, не ответив на вопрос который сами же и задали: нахрена и кому сдался руби? Чем он лучше питона и пхп? Все перечисленные инструменты есть и в других языках, представлены богаче и поддерживаются значительно бОльшим коммьюнити чем в руби.
От того что Мацумото и ДХХ продолжают над руби работу он популярнее не становится.
Комментарий удален модератором
Все, что угодно, лучше пхп.
Все что угодно. Лучше пхп.
аргументируйте, но только с позиции выгоды для бизнеса
Холивар тут начинать не буду и отвечать на этот тред тоже не буду, просто выскажу свою позицию с точки зрения глубокого опыта работы на западном IT рынке и достаточном количеством разных языков, методологий и команд, так как спросили.
Отсутствие строгих типов — это беда для документации. Чем длиннее код (со всякими =>), тем сложнее его поддерживать. Да, мелкие проекты на 1-2 людей проще писать без типов, документации и так, как привыкли (да хоть на 1С). Но проекты, в которых больше 1 программиста работают над одним и тем же кодом, PHP становится адом.
Так что, скорее, вопрос не в том, в чем преимущества не использования пхп для бизнеса, а наоборот: в чем преимущества, ведь технический долг проекта на пхп растет на порядки быстрее, чем на том же тайпскрипте.
Арибедерчи ёпта.
те по сути выкладки технаря приправленные "опытом на буржуйский рынок", считающим что опонент нихуя не смыслит, и любимое слово - технический долг, что собственно я и подозревал увидеть.
в денежном эквиваленте и реальных кейсов, когда технология А - лучше B приведено не было. 1С нормально зарабатывает, знаю конторы и вы их знаете которые работают больше > 1 человека и не кричат что это язык N - ад, вопрос что большой проект обычно тянет еще тучу сервисов на разных языках.
складывается ощущение что IT из problem solverov превращается в стадо инфоциган, оргазмирующих на технологии и пытающихся впарить их реальному сектору, без какого либо анализа, просто потому что это ох-но, и вероятно в будущем лет через 100 возникнет тех долг.
Когда это делает молодежь, еще понятно, но когда здоровые дядьки и конторы спорят о том какой молоток красивей, вне контекста задач - выглядит инфантильно, по меньше мере.
И вам не хворать..
Удачи с ассемблером, ведь споры о молотках это "инфантильно".
Юкихиро Мацумото и сам знает, что язык мертв и дал свое благословение рассказывать об этой печальной ситуации Нику Сатереру. Вот здесь Ник об этом говорит.
https://habr.com/ru/company/railsclub/blog/336690/
А тут он разности Ruby в пух и прах.
https://youtu.be/x0JlOxdXA_g
Знаете мы вот уже 10 лет проводим мероприятие RubyRussia.club (Railsclub), и в этом году планируется под 1000 тысячу участников. Что кстати будет скорее всего рекордом конференции )
это скорее заслуга не языка как такового, а то что сейчас пытается программировать чуть ли не каждый первый.
Любой не каждый первый знает, что Руби мертв и на конференцию не пойдет.
Да ладно, печенюшек набрасали, тянок набрали и понеслось )
И мы знаем что не каждый первый часто в приоритет ставит финансовую сторону.
Тем более по деньгам вполне неплохо некропроекты поддерживать или подсаживать новых клиентов на руби - отличный себе крюк в мягкое место заказчика, особенно для рунета, несколько лет назад была актуальна ситуация, когда народ не мог найти людей на допил месяцами за адекватные суммы.
Субъективно, но мне кажется перспективней iOs пилить, если смотреть с позиции начинающего разработчика (если я правильно понял аудиторию статьи).
О стоимости поддержки проектов как раз есть в видео доклада. И она не ужасает.
Что мертво, умереть не может
Это вы Королю Ночи скажите. В лицо
Мне кажется, это просто мода - хоронить руби.
Скажи "Руби мертв", и ты в тренде.
Посмотрите статистику Google Trends, StackOverflow, на гитхабе создания новых репозиториев. Посмотрите статистику поиска на Udemy. Ruby потерял в популярности в 5 раз от пика своей популярности.
Это мем ))
К поддержанию и пропаганде образа “Ruby is dead” мы сами с большим удовольствием прилагаем усилия. Ник Сатерер, который немало сделал в Rails, с удовольствием наклеил себе на шею нашу татуировку-переводилку с черепом и надписью “Ruby is dead”. Серия таких татуировок и наклеек была выпущена для конференции RubyRussia.
такая же вода как и в прошлый раз про Rust. чувствуется что копирайтеру глубоко насрать на все эти ваши языки, просто поставили план таким образом нагнать лиды или что там у вас ценится
Вроде по Rust зарплаты хорошие
Скучная и неинформативная статья, непонятно для кого рассчитана. Такая же, как и про Rust. Тема почему вы выбираете Ruby не раскрыта.
Никто не будет спорить, что Руби = Рельсы, а Рельсы = Руби. Но указать такие плюсы как MVC, ORM и систему шаблонизации - все равно, что их не указать. Это не уникальные возможности.
Неужели эту воду пишет технический специалист ? Я не верю.
——
" Базы данных...Это дает возможность писать практически одинаковый код под любую поддерживаемую базу данных..." - конечно, хорошая практика менять продовый RDBMS раз в месяц.
"....а не заниматься написанием огромного количества низкоуровневых SQL-команд...." - ага, это язык древних.
——
Мне как специалисту было бы интересно увидеть сравнения с другими языками и как благодаря руби, например, вы ускорили разработку.
Например, если писал я. Я рассказал бы: почему, например, выбрал Golang, а не C++ или Rust. Создал бы таблицу плюсов и минусов, указал бы какие плюшки от выбора мы получили и с чем столкнулись. Рассказал бы про подводный камни, которые всплывают при больших нагрузках.
Людям интересно читать кейсы, а не пересказ википедии.
Википедии очень мало картинок, в этой же статье картинки прикольные.
В последние 3-4 месяца заметил нарастающий хайп вокруг руби. Полагаю, что связано с миграцией разработчиков в более сладкие места/области. Отсюда и повышенное внимание к руби и сотни вакансий, - что на moikrug, что на западе. Смотрел вакансии по удаленке.
Кстати о птичках: генераторы в рельсах действительно удобны:)
Комментарий недоступен
Зачастую, с экономической точки зрения проще отрефакторить то, что уже есть, чем переделывать всё с нуля. И мы (Evrone) готовы влезть и в такое и решить головняк клиентов ;)
Комментарий недоступен
Для настоящих самураев ))
Поставили вашу статью в подсайт Разработка.
Ещё когда руби был на пике популярности, было понятно, что это просто хипстерская фигня. Такая же как монго (хотя монго все же получше будет).
Делать медленный куцый полуклон питона - изначально фэйл.
Если бы не мощный пиар РоР со стороны 37 сигналов, о руби бы знали только его автор и его собака
Руби был одновременно и хипстерским языком, и драйвером веб-разработки, который остановил гегемонию PHP и показал широкому кругу разработчиков, что писать под веб можно на языках общего назначения и даже без страданий. Благодаря Ruby стали широко использоваться пакеты и репозитории, а веб-разработчики задумались о написании тестов. Так что про фигню – явный перебор. На мой взгляд, Руби – один из наиболее сбалансированных и выразительных языков из тех, что я пробовал. Просто очевидно, что всех победит веб-стек, поэтому вклад во все остальное – сомнительная трата времени, но не похоже, что вы об этом.
Django появился в 2005 году.
РоР появился в.... 2005 году!
Не надо плз выставлять все так как будто РоР пришёл этакий на белом коне и всех спас. В нескольких известных мне конторах писали на джанге уже давным давно и просто поулыбались когда РоР вылез на пик популярности и такой "вот до меня у вас ничего не было, а теперь есть всё".
Лучше бы человеко-часы, потраченные на руби, потратили на тот же питон или с++.
По сути люди вбухали годы своей жизни в никуда
Комментарий недоступен
Что Питон, что C++ – языки с ужасной инфраструктурой. И RoR обошел Django именно по этой причине, и потому что он был построен на Ruby, который сделан для людей. Помимо этого C++ в тот момент стагнировал и вкладывать в него время было очень рисково. Да, до возникновения RoR существовали все инструменты и концепции, но Ruby позволил сделать все это быстро, дешево и с использованием последних наработок и минимумом легаси-кода.
Все что подвело Ruby – это низкая скорость и высокие требования к ресурсам. И как только остальные языки обзавелись соответствующей инфраструктурой, конкурировать пришлось вновь, но тут у Ruby не оказалось козырей. А Python/Django на сервере так и не смог вытеснить Ruby за все эти годы.
У вас опять много субъективных утверждений и ни одного факта. Кроме низкой скорости Руби :)
Для начала вы приведите факты вместо подмены логики и эмоциональных высказываний. Вы ведь не считаете тезисы подобные этому: "В нескольких известных мне конторах писали на джанге уже давным давно" фактами?
Конечно считаю, потому что знаю эти компании и этих людей лично. Для меня это факт. Если для вас нет (и я могу это понять), то это в общем-то не мои проблемы, а ваши :) Так же как и умирающий Руби
Комментарий удален модератором
Какая ужасная статья
имел проблемы с производительностью и уступал PHP и Python. Но последние версии практически исправили этот недостатокИ все еще уступает, PHP значительно, а Python немного
не столько проблема языка, сколько вопрос правильного построения архитектуры приложения и уровня знаний разработчикаhttps://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html
Если все так радужно - почему часто ruby дополняют elixir или go?
Ну это можно сказать практически про любой язык, тем более с подобной областью применения, в основном io-bound
Основной плюс ruby(и рельс, конечно) - это множество подходов и инструментов, созданных в других языках под влиянием и по примеру ruby. При этом сам ruby остается языком одного фреймворка(рельс) и одного предназначения - тех самых MVC.
Вы уверены, что стоит продолжать поддерживать реноме Evrone как компании, которая пишет только на Рубях, в то время как вы стараетесь привлекать питонистов, спонсируя Moscow Pythin Conf и Pycon Russia? :)
уверен, что следующей статьёй в цикле будет "почему мы выбралди питон" и при этом она тоже будет состоять из сплошных банальностей. это как фильмы голливуда - идей нет, но бабло рубить надо, поэтому снимаем 1001-й ремейк или сиквел
кек, спасибо, Evgeny Boyko! Возможно, Вы сэкономили мне кучу времени!
промахнулся я...
Почему считаете, что промахнулись?
Имел в виду, что промахнулся комментарием (выше).
Помянем...
Ну какой Ruby? Давно мёртвый язык, к сожалению. Будущего у него нет.
Хотя сам язык хороший вроде бы.
Комментарий недоступен
В общем, как обычно — малочисленность сторонников компенсируется их пассионарностью.
Руби жил, жив и будет жить! Он тонкий, изящный и узконаправленный, в этом и есть его основное преимущество.
Используете ли вы Basic и почему?