Ruby on rails что это
Перейти к содержимому

Ruby on rails что это

  • автор:

Ruby on rails что это

Ruby on Rails — это веб-фреймворк с открытым кодом, от которого программисты становятся счастливыми, код — красивым, а разработка — устойчивой и быстрой.

На этом сайте выложены переводы официального руководства по Rails. Надеемся, эти руководства позволят вам немедленно приступить к использованию Rails и помогут разобраться, что и как в нем работает.

Переводы постоянно актуализируются и добавляются. Код проекта и тексты переводов открыты и размещены на Гитхабе. Желающим помочь всегда рады! Форкайте, предлагайте изменения, вносите их, отправляйте пул-реквесты!

Это перевод Ruby on Rails Guides для версии Rails 7.1. Переводы для ранних версий доступны на гитхабе:

1. С чего начать?

Rails для начинающих Все, что вы должны знать, чтобы установить Rails и создать свое первое приложение.

2. Модели

Основы Active Record Это руководство поможет начать работать с моделями, сохранять в базу данных и расскажет о паттернах и библиотеке Active Record. Миграции Active Record Это руководство раскрывает, как можно использовать миграции Active Record, чтобы привести свою базу данных к структурированной и организованной форме. Валидации Active Record Это руководство раскрывает, как можно использовать валидации Active Record. Колбэки Active Record Это руководство раскрывает, как можно использовать колбэки (методы обратного вызова) Active Record. Связи (ассоциации) Active Record Это руководство раскрывает все связи, предоставленные Active Record. Интерфейс запросов Active Record Это руководство раскрывает интерфейс запросов к базе данных, предоставленный Active Record. Основы Active Model Это руководство раскрывает использование моделей классов без Active Record.

3. Вью

Обзор Action View Это руководство представляет введение в Action View. Макеты и рендеринг в Rails Это руководство раскрывает основные возможности макетов Action Controller и Action View, включая рендеринг и перенаправление, использование блоков content_for и работу с частичными шаблонами. Хелперы Action View Это руководство знакомит с некоторыми из многих хелперов вью. Хелперы форм в Action View Руководство по использованию встроенных хелперов форм.

4. Контроллеры

Обзор Action Controller Это руководство раскрывает, как работают контроллеры, и как они вписываются в цикл запроса к вашему приложению. Оно включает сессии, фильтры, куки, потоковые данные, работу с исключениями, вызванными запросами, и другие статьи. Роутинг в Rails Это руководство раскрывает открытые для пользователя функции роутинга. Если хотите понять, как использовать роутинг в вашем приложении на Rails, начните отсюда.

5. Другие компоненты

Расширения ядра Active Support Это руководство документирует расширения ядра Ruby, определенные в Active Support. Основы Action Mailer Это руководство описывает, как использовать Action Mailer для отправки электронной почты. Основы Action Mailbox Это руководство описывает, как использовать Action Mailbox для получения электронной почты. Обзор Action Text Это руководство описывает, как использовать Action Text для обработки содержимого обогащенного текста. Основы Active Job Это руководство даст вам все, что нужно, чтобы начать создавать, ставить в очередь и запускать фоновые задания. Обзор Active Storage В этом руководстве описывается, как прикреплять файлы к моделям Active Record. Обзор Action Cable Это руководство документирует, как работает Action Cable, и как использовать WebSockets для создания функционала в реальном времени.

6. Копаем глубже

API интернационализации Rails (I18n) Это руководство раскрывает, как добавить интернационализацию в ваше приложение. Ваше приложение будет способно переводить содержимое на разные языки, изменять правила образования множественного числа, использовать правильные форматы дат для каждой страны и так далее. Тестирование приложений на Rails Это достаточно полное руководство по осуществлению различных возможностей тестирования в Rails. Оно раскрывает все от “Что такое тест?” до интеграционного тестирования. Наслаждайтесь. Безопасность приложений на Rails Это руководство описывает общие проблемы безопасности в приложениях веб, и как избежать их в Rails. Отчет об ошибках в приложениях Rails Это руководство представляет способы управления исключениями, которые случаются в приложениях Ruby on Rails. Отладка приложений на Rails Это руководство описывает, как отлаживать приложения на Rails. Оно раскрывает различные способы достижения этого, и как понять что произошло «за кулисами» вашего кода. Конфигурирование приложений на Rails Это руководство раскрывает основные конфигурационные настройки для приложения на Rails. Командная строка Rails Это руководство раскроет инструменты командной строки, предоставленные Rails. Asset Pipeline Это руководство документирует файлопровод (asset pipeline) Работа с JavaScript в Rails Это руководство раскрывает встроенную в Rails функциональность Ajax/JavaScript. Процесс инициализации в Rails Это руководство объясняет внутренние процессы инициализации в Rails. Автозагрузка и перезагрузка констант Это руководство документирует, как работает автозагрузка и перезагрузка констант (режим Zeitwerk). Как перейти с Classic на Zeitwerk Это руководство документирует, как мигрировать приложение Rails с режима classic на zeitwerk . Кэширование с Rails: Обзор Это руководство является введением в ускорение вашего приложения на Rails с помощью кэширования. Инструментарий Active Support В этом руководстве, вы научитесь использовать инструменты Active Support API для отслеживания событий внутри Rails или другого кода на Ruby. Использование Rails для API-приложений Это руководство раскрывает, как эффективно использовать Rails для разработки приложения JSON API. Active Record для PostgreSQL Это руководство рассказывает о специфике использования PostgreSQL с Active Record. Несколько баз данных с Active Record Это руководство раскрывает использование нескольких баз данных в вашем приложении. Шифрование Active Record Это руководство раскрывает шифрование информации в базе данных с использованием Active Record.

7. Расширяем Rails

Основы создания плагинов Rails Это руководство раскрывает, как создать плагин, расширяющий функциональность Rails. Rails on Rack Это руководство раскрывает интеграцию Rails и Rack, и взаимодействие с другими компонентами Rack. Создание и настройка генераторов и шаблонов Rails Это руководство раскрывает процесс добавления совершенно нового генератора для вашего расширения или представления альтернативного элемента для встроенного в Rails генератора (такого как представление альтернативных тестовых заглушек для генератора скаффолда). Engine для начинающих Это руководство объясняет, как написать монтируемый engine. Треды и выполнение кода в Rails В этом руководстве описываются необходимые требования и инструменты, доступные при работе напрямую с конкурентностью в приложении Rails. Шаблоны приложения Rails Это руководство раскрывает создание и использование шаблонов приложений на Rails.

8. Вносим вклад в Ruby on Rails

Вносим вклад в Ruby on Rails Rails — это не ‘чей-то там фреймворк’. Это руководство раскрывает многообразие способов, которыми вы можете быть вовлечены в продолжающуюся разработку Rails. Рекомендации по документированию API Это руководство документирует рекомендации для документации Ruby on Rails. Рекомендации для руководств по Ruby on Rails Это руководство документирует рекомендации для руководств по Ruby on Rails. Установка зависимостей для разработки Это руководство раскрывает, как настроить среду для разработки ядра Ruby on Rails. Политика поддержки (версий) Какие версии Ruby on Rails поддерживаются в настоящее время и когда ожидать новые версии.

9. Заметки о релизах

Апгрейд Ruby on Rails Это руководство поможет произвести апгрейд приложения до последних версий Ruby on Rails. Версия 7.1 — Октябрь 2023 Заметки о релизе Rails 7.1 Версия 7.0 — Декабрь 2021 Заметки о релизе Rails 7.0 Версия 6.1 — Декабрь 2020 Заметки о релизе Rails 6.1 Версия 6.0 — Август 2019 Заметки о релизе Rails 6.0 Версия 5.2 — Апрель 2018 Заметки о релизе Rails 5.2 Версия 5.1 — Апрель 2017 Заметки о релизе Rails 5.1 Версия 5.0 — Июнь 2016 Заметки о релизе Rails 5.0 Версия 4.2 — Декабрь 2014 Заметки о релизе Rails 4.2 Версия 4.1 — Апрель 2014 Заметки о релизе Rails 4.1 Версия 4.0 — Июнь 2013 Заметки о релизе Rails 4.0 Версия 3.2 — Январь 2012 Заметки о релизе Rails 3.2 Версия 3.1 — Август 2011 Заметки о релизе Rails 3.1 Версия 3.0 — Август 2010 Заметки о релизе Rails 3.0

Лицензия CC BY-SA 4.0 «Rails», «Ruby on Rails» и логотип Rails — торговые марки DHH

Фреймворк Ruby on Rails

Rails — это прежде всего среда разработки, которая великолепно подходит для создания любого типа веб‑приложений: систем для управления веб‑сайтами и платформ для ведения электронной торговли, программ для организации совместной работы и для веб‑сервисов для осуществления коммуникации, для учетных и ERP‑систем, статистических и аналитических систем.

Ruby on Rails (RoR или Рельсы) — это многоуровневый MVC-фреймворк для построения веб‑приложений, использующих реляционные и NoSQL базы данных (например, MySQL, MariaDB, PostgeSQL, MongoDB). Фреймворк написан на языке программирования Ruby. Rails подходит как для разработки обычных сайтов, которые должны быть реально быстрыми, отказоустойчивыми и работающими под высокой нагрузкой, так и для веб‑приложений со сложной бизнес‑логикой и динамичными web‑интерфейсами. Ruby on Rails является открытым программным обеспечением и распространяется под лицензией MIT.

Профессиональные разработчики

Стоит отметить то факт, что на языке программирования Ruby работают в основном профессионалы: порог вхождения достаточно высок, поэтому программисты в Ruby обычно приходят уже после нескольких лет работы на любых других языках программирования (чаще всего из мира PHP). Поэтому даже начинающий Ruby‑программист — это опытный веб–разработчик с большим запасом знаний и опыта. Для языка Ruby самый популярный фреймворк — это Rails, более 90% веб‑приложений, которые написаны на Ruby, используют именно Рельсы.

Культура разработки на Ruby on Rails

Основными принципами разработки на Rails являются:

  • Принцип DRY (Don’t repeat yourself) — фреймворк предоставляет механизмы повторного использования программного кода. Это позволяет не только минимизировать дублирование кода, но и повысить скорость разработки.
  • Принцип Convention over configuration — по умолчанию во фреймворке используются многочисленные соглашения по конфигурации, типичные для большинства приложений. Это очень упрощает создание приложений, так как явная спецификация конфигурации требуется только в нестандартных случаях.
  • Автоматизированное тестирование — в составе RoR поставляются средства для проведения полностью автоматического модульного, интеграционного и функционального тестирования, а идеология Ruby on Rails предполагает использование методов разработки через тестирование (TDD — Test Driven Development). Всё это делает разработанные приложения реально надёжными.

Расширяемость фреймворка Ruby on Rails

Вокруг Ruby on Rails сложилась большая экосистема подключаемых плагинов с открытым исходным кодом («джемов», gems), которые реализуют наиболее востребованные функции. «Джемы» бывают очень разные: от низкоуровневых, отвечающих за какой‑то аспект внутренней работы приложения, до высокоуровневых, представляющих из себя отдельные модули для решения целого спектра бизнес‑задач. Использование системы подключамых плагинов во многом и послужило причиной высокой популярности фреймворка — возможность выборочно подключать отдельные компоненты и библиотеки очень сильно ускоряет разработку, а тот факт, что используемые расширения хорошо протестированы и отлаживаются годами, обеспечивает надёжность решений, разработанных при помощи такого подхода.

Мифы о языке Ruby и о фреймворке Ruby on Rails

  1. «Нет разработчиков». Миф. Разработчики есть. Конечно, их меньше, чем на PHP, но и средний уровень «на голову» выше — очень многие из тех, кто называет себя php‑программистом, на самом деле всего лишь верстальщики с поверхностными знаниями языка программирования, которые не в состоянии написать даже самое простое веб‑приложение. Если сравнивать Ruby с Java, то число разработчиков сопоставимо, а в сравнений с .NET, Python и Perl — Ruby‑разработчиков больше.
  2. «Очень дорого». Миф. Хорошие веб‑программисты вообще стоят дорого, вне зависимости от языка и платформы разработки. Уровень ЗП программиста на PHP и программиста на Ruby сопоставим, если первый и второй в состоянии написать программу сложнее «Hello, world!», работают на фреймворках, знают ООП, парадигму MVC, а также имеют опыт работы в сфере более 3х лет.
  3. «Медленно» и «Немасштабируемо». Мифы. GitHub, Groupon, Basecamp, Twitter, Lenta.ru и еще многие проекты с многотысячной посещаемостью используют Rails: работают быстро, нагрузки выдерживают и отлично масштабируются.

Отзывы о платформе Ruby on Rails

— Rails is the killer app for Ruby. Yukihiro Matsumoto, создатель языка Ruby

— After researching the market, Ruby on Rails stood out as the best choice. We have been very happy with that decision. We will continue building on Rails and consider it a key business advantage. Evan Williams, создатель Blogger и Twitter

— Powerful web applications that formerly might have taken weeks or months to develop can be produced in a matter of days. Tim O»Reilly, основатель O»Reilly Media

Резюме

Мы разрабатываем веб‑проекты на Ruby on Rails и считаем правильным выбор этой платформы для разработки действительно сложных решений. Еще несколько бизнес‑значимых причин выбрать Ruby on Rails для разработки веб‑приложения или сайта.

Статья опубликована в 2019 году

Тематические статьи

Язык программирования Ruby

Ruby (ruby — рубин, руби) — интерпретируемый мультипарадигмальный язык программирования: динамический, объектно‑ориентированный, рефлективный, императивный, функциональный. Активно используется в веб‑разработке, в системном администрировании и в работе операционных систем (Mac OS X, Linux, BSD).

Ruby on Rails
языки программирования
веб-разработка
Статья опубликована в 2014 и обновлена в 2022 году

Почему стоит выбрать Ruby on Rails для разработки веб‑приложения или сайта?

Разработку сложных веб‑проектов с использованием фреймворков на текущий момент экономически целесообразно вести на одном из следующих языков: PHP, Ruby, Python, Java, C#. Каждый из языков имеет далеко не по одному фреймворку, написанному на нём.

В этой статье мы не будем рассматривать преимущества языка программирования Ruby и фреймворка Ruby on Rails с технической стороны, а рассмотрим факторы, влияющие на выбор этой платформы с точки зрения бизнеса.

Ruby on Rails
фреймворки
веб-разработка
Статья опубликована в 2014 году

Выбор между CMS и фреймворком

С технической точки зрения любой функционал может быть реализован или на CMS, или на фреймворке, или реализован без использования каких‑либо платформ на чистом языке программирования.

Однако некоторые проекты проще сделать на CMS, некоторые — на фреймворке, а разработка без использования платформ редко бывает рациональным решением с точки зрения бизнеса. В большинстве случаев, выбор платформы стоит основывать на экономических критериях. В статье приведены основные критерии, которые позволят принять обоснованное решение по этому вопросу.

фреймворки
веб-разработка
Статья опубликована в 2019 году

Платформы для создания сайтов: CMS, фреймворки и SaaS‑решения

От выбора платформы для разработки зависит как сама по себе реализуемость необходимого функционала, так и возможности дальнейшего развития веб‑проекта. Для создания сайта, как правило, выбирается одна из платформ: CMS, фреймворк или SaaS‑решение.

SaaS‑платформы еще часто называют «конструкторами сайтов». Основное преимущество этого варианта — весьма хороший уровень качества за очень небольшие деньги.

Система управления сайтом (Content Management System) служит для разработки стандартных разновидностей сайтов. Много небольших и средних сайтов строится именно на CMS‑платформах, так как это наиболее целесообразный с экономической точки зрения подход.

Фреймворк — это программный продукт, который также как и CMS служит основой для сайта, но фреймворк в отличие от CMS — это более низкоуровневое решение, обладающее большей гибкостью и производительностью. Этот вид платформ используют почти все крупные веб‑проекты, а также подавляющее большинство веб‑приложений и веб‑сервисов.

Ruby on rails что это

Ruby — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования.

Ruby on Rails — полноценный, многоуровневый фреймворк для построения веб-приложений, использующих базы данных, который основан на архитектуре Модель-Представление-Контроллер (Model-View-Controller, MVC).

Разработчики

Начнем с того, что язык программирования Ruby — не для новичков. Порог входа высок, поэтому программисты в Ruby обычно приходят после нескольких лет работы на любых других языках программирования. Средний возраст программиста на Ruby — 25–28 лет. Обычный начинающий Ruby on Rails программист — это опытный веб–разработчик с большим запасом знаний, опытом разработки проектов на любых других языках, пониманием принципов программирования и прекрасным пониманием веб–разработки в целом.

Основные преимущества Ruby / Ruby on Rails

Скорость разработки

Основным преимуществом языка программирования Ruby и фреймворка Ruby on Rails считается скорость разработки. Практика показывает, что скорость разработки проектов на RoR увеличивается на 30–40 процентов по отношению к любому другому языку программирования или фреймворку. В первую очередь прирост скорости разработки определяется обширным набором готовых к работе штатных инструментов RoR, колоссальным набором готовых решений в сообществе, языку Ruby и простоте программирования на нем.

Одной из важнейших частей культуры RoR является социальность. Решил проблему, — помоги решить другим. Реализовал свой модуль, — поделись с сообществом. Таким образом, на данный момент в открытом доступе хранятся тысячи готовых решений тех или иных задач. Системы аутентификации, авторизации, комментирования, системы платежей, почтовые рассылки и многое другое (все то, что обычно разрабатывается «с нуля») внедряются реализованные кем–то другим, протестированные и рекомендованные многочисленным сообществом.

Культура и стандарты

Ruby on Rails — это фреймворк. Зачастую фреймворк не позволяет вам самодеятельность. Конечно же, в Ruby on Rails можно «изобрести свой велосипед» и программировать в любых направлениях, не опираясь на стандарты; но зачастую этого не требуется. Стандарты размещения файлов в проекте, стандарты написания кода в проекте, общие правила программирования в Ruby on Rails сильно структурируют любой проект. За счет этого проект становится читаемым. Вхождение в проект новичков происходит очень быстро. Опыт показывает, что любой новичок в проекте в первый же день работы делает свои первые полезные правки. За счет этого не считается большой проблемой, если разработку проекта изначально вела одна команда программистов, а поддержку проекта или доработку — совершенно другая. Проект на RoR априори понятен любому разработчику.

Некоторые приятные инструменты разработки

Тестирование

При разработке любого крупного проекта встает резонный вопрос. Как и кто будет тестировать проект? Не всегда есть средства и желание создавать целые отделы тестирования, к тому же хочется автоматизировать этот процесс. В отличие от других фреймворков, в составе RoR есть отличные средства автоматизированного тестирования. В других языках программирования и фреймворках штатных средств тестирования нет. Конечно, есть сторонние разработки, позволяющие организовать автоматическое тестирование проекта на PHP, но они не ставятся “из коробки” и об их использовании программисты чаще не задумываются. В проекте на Ruby on Rails, в идеале, код проекта не пишется до тех пор, пока под этот код не написаны тесты. RoR идеология предполагает изначальное использование методов BDD (Behavior Driven Development) или TDD (Test Driven Development).

Кеширование

Кеширование проектов — один из важнейших этапов разработки крупного интернет–проекта. В PHP имеются различные варианты кеширования данных. Эти варианты и инструменты прикручиваются, пристраиваются, приделываются, прикрепляются сбоку. До сих пор в сообществе PHP нет единого мнения: что лучше использовать, как лучше кешировать данные, какими инструментами пользоваться.

Ruby on Rails в его базовой комплектации имеет штатные средства кеширования данных. На старте предоставляются инструменты, позволяющие реализовать кеширование данных на проекте. Вы можете кешировать целые страницы или же блоки кода. Можете кешировать результаты запросов и ActiveRecord–модели. Кешировать можно как при помощи memcached или redis, так и другими средствами. Для реализации кеширования на Ruby on Rails проекте вам в 95 процентах случаев не потребуется ничего кроме уже готовых и штатных решений.

Локализация

Часто встречается ситуация, когда кто-то сделал проект, а потом неожиданно понимает, что для продолжения развития проекта необходима английская версия. Разработчики на PHP при этом начинают заводить разговоры о том, что это не было предусмотрено заранее, что это долго и крайне трудоемко. Давайте, дескать, откроем параллельный проект, который будет полной копией этого, и переведем его.

Ruby on Rails в базовой комплектации имеет средства локализации проекта. Вы можете предусмотреть необходимость поддержки различных языков на сайте как изначально, так и в дальнейшем. RoR умеет раздавать разные шаблоны для разных языков, содержит в себе конфигурационные файлы с переводами терминов и многие другие штатные инструменты для реализации локализации проекта.

Роутинг (красивые урлы или ЧПУ)

Зачастую во многих PHP проектах мы можем видеть картину, когда адрес определенной страницы огромен и непонятен. В Ruby on Rails есть штатная возможность гибко настроить ваш роутинг, вид адресов, названия основных разделов. Есть возможность быстро изменить адреса в одном месте без необходимости изменения этого адреса во всем проекте. В сообществе RoR–разработчиков активно используются идеология REST. Адреса страниц в проектах на Ruby on Rails всегда понятны, красивы, прекрасно понимаются поисковиками, просты.

Валидации

В ruby on rails прекрасно реализованы инструменты, позволяющие валидировать входящие данные. Ваши пользователи заполняют формы и нужно проверить правильность ввода адреса электронной почты, наличие пароля или необходимую минимальную длину логина, — штатные средства Rails вам в этом помогут.

Миграции и работа с базой данных

Обыденная проблема многих проектов на PHP — невозможность понятными средствами и инструментами контроллировать структуру базы данных. Изменения в структуру зачастую вносятся вручную и прямо в базу. Из–за этого в проекте появляются многочисленные непонятные поля и таблицы, про которые уже никто ничего не помнит. В Ruby on Rails существуют штатные инструменты работы с базами данных — «миграции». Структура базы данных хранится в коде приложения и конфигурируется из проекта. Ваша структура будет всегда в репозитории, любое изменение структуры будет задокументировано и привязано к определенному коммиту в репозиторий.

Безопасность

Ruby on Rails по умолчанию сильно заточены под безопасность проекта. При использовании инструментов RoR исключены SQL инъекции и XSS атаки. Все входные параметры экранируется по умолчанию. Выводимые переменные в шаблонах также экранируются, только если вы не указали обратной опции. У разработчика нет шансов допустить ошибки безопасности (не без исключений, разумеется).

Деплой

В среде Ruby on Rails существует много удобных и приятных инструментов. В том числе инструменты, которые применяются в процессе деплоя. Например, используя Capistrano, выкатка новой версии приложения на боевой сервер (или несколько серверов) потребует одной команды в консоли: cap deploy.

Дополнительные принципы разработки на Ruby / Ruby On Rails

Системы контроля версий

При разработке любого Ruby on Rails проекта подразумевается использование известных систем контроля версий. Использование git, как говорится, «добровольно–принудительно», так как многие системы автоматического развертывания проекта на «боевых» серверах не работают без них. Программисты на RoR изначально, при изучении платформы, вынуждены осваивать git, так как многочисленные примеры кода в документации подразумевают использования данных систем контроля версий. Во многом из за этого неопытным новичкам проще начать изучать PHP и не трогать Rails до достижения определенного уровня понимания веб–разработки как таковой и ее принципов.

Системы управления проектами/таск менеджеры

Ruby on Rails был изначально разработан для того, чтобы реализовать систему управления проектом — Basecamp. Также на RoR был создан Redmine (популярная и бесплатная система управления проектом). Поэтому при работе над Rails проектами «добровольно–принудительно» использование таких систем. Все системы интегрируются с системами контроля версий, что позволяет более гибко регулировать процессы разработки проекта.

Мифы и предрассудки

Разработчиков на Ruby on Rails нет

Начнем с того, что разработчики есть, но они менее многочисленны, нежели разработчики на PHP. Это связано с разным порогом входа в освоение технологии (обычно в Ruby попадают люди после нескольких лет PHP), что говорит о качестве разработчиков. Хороших разработчиков одинаково мало во всех технологиях.

Разработчики на Ruby on Rails стоят очень дорого

Разработчики высокого уровня стоят действительно дорого. Причем они одинаково дорого стоят на любых языках программирования и платформах. В RoR мало дешевых разработчиков из–за отсутствия плохих разработчиков в сообществе (не без исключений, разумеется).

«Рельсы» не масштабируются

Это самое главное заблуждение тех людей, которые не пробовали писать на RoR серьезных проектов. Ruby on Rails прекрасно масштабируются. Посмотрите на GitHub, Groupon, Basecamp и др. Все эти проекты написаны на Rails и все эти проекты имеют любые другие проблемы, но только не проблемы масштабирования (чаще всего проблемы с производительностью баз данных).

Ruby медленнее чем PHP

На данный момент производительность Ruby не уступает PHP. Но так ли это важно? Ведь время генерации страницы, в основном — это время, потраченное на запросы в базу данных. Скорость самого языка обычно не играет большую роль.

При этом у вас есть возможность пользоваться главным преимуществом RoR — скоростью разработки проектов и низкой стоимостью их поддержки. В данный момент стоимость разработчиков на порядок дороже стоимости лишней планки памяти в сервер. В любом случае, проблемы производительности любого проекта, — это не проблемы неверного выбора платформы или языка программирования. Скорее всего, это проблемы изначально ошибочной архитектуры проекта, кеширования данных или оптимизации БД.

Несколько цитат известных в Ruby-сообществе людей

« Ruby on Rails — это прорыв в снижении входного барьера в программировании. Мощные веб–приложения, которые раньше разрабатывались за недели или месяцы, теперь могут быть сделаны за считанные дни».

« Ruby on Rails и PHP — это как Apple Macintosh и PC. Нас мало, но мы элита. Ruby on Rails и PHP — это культура против хаоса. PHP позволяет вам построить свой велосипед из частей других велосипедов, не ориентируясь при этом ни на какую «велосипедную библию». RoR–разработчики более продвинуты, чем любой школьник, которому достаточно прочитать одну книжку и говорить, что он знает PHP. Наш плюс в том, что при всем бардаке PHP, мы более организованны».

«Мой опыт показывает, что в программах, написанных на Ruby, меньше строк, чем в аналогичных программах на языках Java и C#. А чем меньше кода, тем проще его сопровождать, что немаловажно, так как затраты на долгосрочное сопровождение считаются самой крупной стоимостной составляющей успешных программных проектов. Отладка небольших программ занимает меньше времени даже без “навороченных” инструментов отладки».

«Почему опытные разработчики корпоративных приложений вроде меня влюбляются в Ruby и Rails? Для удовлетворения предъявленных требований сложность решений, создаваемых с применением технологий Java и Microsoft, просто неприемлема. Излишняя сложность не позволяет отдельному человеку понять проект в целом и сильно усложняет коммуникацию внутри команды. Из–за упора на следование паттернам проектирования и зацикленности на производительности на этих платформах пропадает удовольствие от работы над приложением».

«Ruby on Rails, не прибегая к насилию, принуждает программистов писать более структурированный код. Код на «рельсах» даже без документации можно прочитать и осознать. Проект при этом проще поддерживать различным командам разработчиков. Проект не привязывается к определенному разработчику или команде. У следующих разработчиков проекта не возникает такое знакомое всем желание как “Ничего не понятно! Давайте все перепишем и переделаем по-нашему”».

« Ruby — красивый язык. Кодировать на Ruby приятно. Все мои знакомые, перешедшие на Ruby и Rails, говорят, что стали счастливее. Главным образом, по этой причине Ruby и Rails изменяют статус кво, особенно в области разработки корпоративных приложений. Прежде чем стать приверженцем Rails, я привык работать над проектом с нечеткими требованиями, не имеющими отношения к реальным потребностям. Я устал выбирать между конкурирующими платформами и интегрировать их между собой, устал писать уродливый код. А Ruby — динамический, высокоуровневый язык. Код на Ruby проще читать и писать, поскольку он более естественно отображается на конкретную предметную область и по стилю ближе к естественному человеческому языку. Удобство восприятия имеет массу преимуществ не только в краткосрочной, но и в долгосрочной перспективе, поскольку программа передается в промышленную эксплуатацию и должна быть понятна программистам сопровождения».

« В сообществе Rails нет места принуждению. David Heinemeier Hansson выбрал язык, который доставлял ему радость. Платформа Rails родилась из кода, который представлялся ему красивым. Это и задало тон общения в сообществе Rails. Все в мире Rails субъективно. Человек либо приемлет что–то, либо нет. Но между теми, кто приемлет, и теми, кто не приемлет, нет злобы, а лишь кроткая попытка убедить».

«В начале своей карьеры веб–разработчика, я долго программировал на PHP. Как и любой программист, я дошел до того, что стал писать собственную CMS. Меня постоянно не устраивали те средства, которые предоставляет мне PHP и я придумал свой собственный небольшой фреймворк. В собственном фреймворке я реализовал все так, как мне было удобно. Какого же было мое удивление, когда я увидел Rails. Я понял, что Ruby on Rails очень похож на мой фреймворк, следовательно, в нем реализовали и допилили все то, чего мне так не хватало в PHP. Прибавим к этому огромное сообщество, которое постоянно обновляет рельсы — получаем инструмент, в котором просто удобно и хорошо делать любые веб–проекты. Свой фреймворк я бросил и с радостью перешел на RoR. Считаю, что Ruby on Rails делает программиста счастливее».

Чем хорош Ruby on Rails и как он ускоряет разработку

Этот пост — перевод статьи программиста Кшиштофа Копидловски, посвященной разбору преимуществ Ruby on Rails. Материал будет интересен в первую очередь начинающим программистам и уж затем — профессионалам.

Ruby on Rails поможет сэкономить время, которое вы обычно тратите на разработку. Просто потому, что при использовании этого фреймворка кода будет меньше, а функциональность останется прежней.

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

От Java к Ruby

Для меня работа с Ruby — реальная экономия времени. Я могу сконцентрироваться на методах и логике, а не возиться с большим объемом кода строка за строкой. Раньше я думал, что Java — геймченджер, но после знакомства с Ruby on Rails я был впечатлен еще больше.

Примерно год я пишу на Java и занимаюсь backend-разработкой. Мне кажется, что любой программист, работающий с этим языком, поймет то, о чем я говорю. Предположим, вы хотите написать конечную точку для возврата .zip-файла. Решить эту задачу можно без особых проблем, но для этого необходимы сотни строк кода.

Но что, если я скажу вам, что можно обойтись и несколькими десятками строк?

Это Ruby — объектно-ориентированный, динамический, рефлективный, интерпретируемый высокоуровневый язык программирования. Он обладает независимой от операционной системы реализацией многопоточности, сильной динамической типизацией, сборщиком мусора и многими другими возможностями. На нем написано множество веб-приложений, среди которых GitHub и Twitter.

Ruby позволяет сократить объем кода

Наверное, вы спрашиваете себя, как вообще возможно уменьшить количество кода до нескольких десятков строк с сохранением логики, указанной выше. Это действительно возможно, причем мы пока не говорим о фреймворках, речь о чистом языке.

Например, если у вас есть массив и вы хотите увеличить все элементы на 2, а затем вернуть их в обратном порядке в Java, код будет похож на этот (с использованием интерфейса List):

import java.util.*; import java.util.stream.Stream; import static java.util.Collections.reverseOrder; import static java.util.stream.Collectors.toList; public class MyClass < public static void main(String args[]) < Listlist = Stream.of(1, 2, 3) .map(val -> val + 2) .sorted(reverseOrder()) .collect(toList()); list.forEach(System.out::println); > >

То же самое на Ruby будет выглядеть так:

array = Array.new(5,2)
array.map < |x| x + 2 >.reverse

Разница налицо. И вам не нужно импортировать классы.

Динамическая типизация

После того как мы убедились в том, что строк кода может быть действительно не слишком много, можно задуматься о том, что в примере выше не задан тип переменной. Это действительно так — дело в том, что в Ruby все переменные динамически типизированы.

Если вы пишете метод, который принимает два параметра, вам не нужно указывать их типы, вместо этого можно просто сосредоточиться на логике. Результат: меньше кода, при этом более качественного и чистого.

В Ruby также есть множество собственных методов, которые позволяют ускорить кодинг. При написании программ я чаще всего использую преобразование Hash в Array, а затем в JSON. В Ruby я могу выполнить его всего одной строкой!

On Rails

Наиболее популярный фреймворк для Ruby — Rails. Он обеспечивает примерно такую же функциональность для языка, как Spring для Java. Я хотел бы поделиться некоторыми своими находками, которые могут вам пригодиться.

Все endpoints в одном месте

Одна из вещей, которая мне нравится в Rails, — мне нужен лишь один файл для объявления всех своих endpoints. Я всегда могу использовать команду терминала $ rake routes для того, чтобы их увидеть. Это отличный вариант для больших проектов, когда вам необходимо сделать нечто на основе того, что уже написано.

Кроме того, вы можете разделить ваши endpoints на группы. К примеру, когда у вас есть модель User, вы можете установить пути для всех ее членов таким образом, чтобы каждый endpoint автоматически получал свой идентификатор.

Вам не придется использовать разные параметры для тех же endpoints. В Rails, по умолчанию, вы можете передавать любые параметры в конечную точку и просто проводить валидацию для тех из них, которые вы хотели бы использовать в контроллере.

def user_params
params.require(:user).permit(:name, :surname, :birth_date, :avatar)
end

Базы данных Rails

Все миграции здесь прописаны в приложении, поэтому настройка базы данных на разных устройствах сводится к выполнению одной команды: $ bundle rake db: setup. Таким образом, внешний клиент для настройки или использования базы данных просто не нужен.

И нет, база данных, которую вы создали и перенесли на другое устройство, не будет пустой: в вашем Rails-приложении есть файл с именем seeds.rb, в котором вы можете указать все записи для разных моделей, необходимых для работы приложения. В итоге на модель нужно всего лишь несколько строк кода.

Команда $ bundle rake db:setup выполняет три функции:

  • Создает базу данных, если ее еще нет;
  • Запускает все миграции;
  • Заносит все исходные данные из вашего seed-файла.

Во фреймворке Hibernate для Java необходимо прописывать все атрибуты с аннотациями, а затем еще и сеттеры для тех атрибутов, которые вам необходимо модифицировать. В этом случае вы получаете на выходе большое количество кода.

В Rails то же самое занимает одну строку. DB Schema сохраняется в файле schema.rb, который автоматически создается при запуске миграции. И в классе не нужны сеттеры или атрибуты. Когда потребуются последние, достаточно будет написать: Model.attribute — и это все.

Как уже говорилось выше, с Rails вы можете фокусироваться именно на логике и методах вашего проекта, а не на коде.

Заключение

Ruby on Rails дает вам мощные инструменты вроде динамической типизации или byebugging, которые неплохо ускоряют процесс программирования.

Если вы хотите взять курс на разработку веб-приложений, обязательно попробуйте написать небольшое приложение на Rails, чтобы понять, как это работает. Никогда не поздно узнать что-то новое — даже в том случае, если вы предпочитаете традиционные инструменты.

  • Онлайн-курс «Профессия frontend-разработчик»
  • Практический курс «Мобильный разработчик PRO».
  • Практический годовой курс «PHP-разработчик с нуля до PRO».
  • ruby on rails
  • фреймворки
  • языки программирования
  • обучение
  • работа
  • Блог компании Skillbox
  • Ruby
  • Ruby on Rails
  • Учебный процесс в IT

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *