Почему стоит учить Ruby
Особенности языка и фреймворка Ruby on Rails.
Язык программирования Ruby создал разработчик Юкихиро Мацумото в 1995 году. Он полагал, что новый язык с простым синтаксисом, интуитивным дизайном и командами «сделает программистов счастливыми». Сейчас это 9-й по популярности язык разработки в Украине и 13-й — в мире. Вместе с Максимом Герасевичем, Ruby backend-девелопером в SoftServe, рассказываем, с чего начать изучение языка.
Особенности языка
Ruby создан как язык программирования общего назначения. Он высокоуровневый (в нем много абстракций), динамичный (типы данных определяются во время выполнения программы, что увеличивает скорость) и интерпретируемый (его не нужно компилировать в машинный код).
Максим: «Для изучения Ruby полезным будет любой опыт разработки, но лучше всего знать Python — из-за динамической типизации языка и похожего синтаксиса».
Ключевые черты
-
Синтаксис, который легко читать
Максим: «Синтаксис Ruby, в отличие, например, от Java, сильно упрощен, и в нем минимум символов. Например, в коде нет скобок и точек с запятой для обозначения конца команды».
-
Реализация ООП-парадигмы
В Ruby «все есть объект» — числа, строки и типы данных. Не-объекты — только управляющие структуры (набор служебных слов для управления программой). Действия в программе выполняют с помощью методов, которые вызываются на объектах. Например, нужно решить уравнение 3+5. Числа 3 и 5 относятся к классу Numeric. Чтобы сложить их, нужно добавить к классу метод plus. Таким образом можно расширять функции любого элемента в программе и добавлять аргументы к классам. В Ruby не бывает несовместимых типов данных, а методы добавляются в оригинальный класс без правки исходного кода. В большинстве ООП-языков нужно наследовать новый класс и добавлять к нему метод.
-
Поддержка блоков
Блок в Ruby — это группа из нескольких команд, которые можно добавить к методам с помощью выражения yield. Это помогает разработчикам быстрее переносить повторяющийся код.
-
Обработка исключений
Это механизм, который предотвращает ошибки. Когда случается исключение, которого нет в скрипте, выполнение программы останавливается. В Ruby, чтобы обработать исключение, в блоке, который может вызвать ошибки, используют «спасательную» фразу rescue. Если во время выполнения этого блока кода возникает исключение, управление передается в блок между командой спасения (rescue) и завершения (end).
Максим: «Например, программе нужно найти пользователя с id 123. Если в базе данных есть такой пользователь, программа выдает результат. Если в базе нет пользователя, чтобы программа не остановилась, мы “перехватываем” выполнение команды в блоке rescue, где прописываем необходимое действие».
Также при обработке исключений после команды rescue иногда добавляют команду ensure. Она отвечает за код, который будет выполнен всегда в конце блока исключений. Если программа не встретила ошибок при выполнении, то переходит не к завершению (end), а к инструкции блока ensure. Если найдена ошибка — программа сначала выполняет инструкции блока rescue, а затем — ensure.
Что такое Ruby on Rails
Ruby — скриптовый язык сценариев: сфера его применения ограничивается лишь фантазией разработчика.
С помощью IDE RubyMotion создают мобильные приложения для Android и iOS. Его применял Basecamp (инструмент для управления проектами) и геймдев-компания Doublespeak Games для мобильной ролевой игры A Dark Room.
Чаще всего Ruby используют с фреймворками. Например, фреймворк Chef применяют для управления серверами, а Vagrant — для создания виртуальных машин. Самый популярный — фреймворк для создания веб-приложений Ruby on Rails (RoR), который называют «рельсами».
Он реализован с помощью архитектуры MVC (model-view-controller). MVC позволяет разделить код на блоки. Модель взаимодействует с контроллером и отвечает за структуру приложения. Контроллер кодирует действия пользователя и обеспечивает связь между моделью и представлением (view), которое отображает информацию и изменения модели.
Также Ruby on Rails придерживается парадигмы convention over configuration (соглашение по конфигурации). Это принцип, по которому разработчику в большинстве случаев не нужно настраивать конфигурацию программы. Например, если в программе есть класс Customers, то соответствующая таблица в базе данных тоже автоматически получит такое название. Дополнительно прописывать название нужно только в случае переименования таблицы.
У Ruby on Rails есть тысячи готовых решений в открытом доступе — системы платежей, рассылок, авторизации. Сам проект легко масштабировать в многоязычный: во фреймворке есть файлы для отображения на разных языках и перевода терминов.
Ruby часто применяют в стартапах, потому что Ruby on Rails создавался как фреймворк для прототипирования сайтов. На нем можно быстро создать черновик проекта и увидеть его преимущества и недостатки.
Но RoR не настолько быстрый на серверной части, как, например, Node.js или Django. Еще один минус Ruby — потребление большого количества оперативной памяти. Если нужно написать базу данных, которая будет потреблять минимум ресурсов, — выбирайте С или C++, где параметры БД можно настроить детальнее.
Максим: «Чтобы понимать, как работает Ruby on Rails, лучше изучить статьи его разработчиков. После освоения фреймворка нужно работать с библиотеками, которые предоставляют функционал сайта. К примеру, аутентификацию пользователя можно сделать с помощью библиотеки Devise. Я применяю библиотеку Pundit, если нужно работать с рестрикшенами и ограничениями для пользовательского интерфейса и интерфейса администратора.
Также важно уметь работать с ActiveRecord ORM. Это прослойка между базой данных и кодом, реализованная на шаблоне проектирования приложений ActiveRecord. Она отвечает за представление бизнес-логики и данных — конвертирует рекорды с базы данных в объекты в Ruby».