Ruby — интерпретируемый язык программирования общего назначения с динамической типизацией и полностью объектно-ориентированной парадигмой (в отличие от Python или Java, где примитивные типы не являются объектами). Философия Ruby — «радость программирования»: синтаксис близок к естественному языку, метапрограммирование доступно из коробки.
Как работает
Основная реализация — MRI (Matz's Ruby Interpreter, также CRuby), написанная на C. Альтернативы: JRuby (на JVM), TruffleRuby (GraalVM, высокая производительность), mruby (embedded). Ruby поддерживает:
- Полностью объектную модель — всё является объектом, включая числа и nil.
- Блоки, проки и лямбды — замыкания с гибким синтаксисом (
do |x| ... end). - Мixin через модули (mixins) — альтернатива множественному наследованию.
- Метапрограммирование — динамическое добавление методов, открытые классы.
- Gems — пакетный менеджер для Ruby-библиотек (rubygems.org).
Ruby on Rails (RoR) — фреймворк, построенный на принципах Convention over Configuration (CoC) и Don't Repeat Yourself (DRY). Активная запись (ActiveRecord) для работы с СУБД, Action Pack для маршрутизации и контроллеров. Ранние версии GitHub, Shopify, Basecamp, Twitter написаны на Rails.
История
Юкихиро Мацумото («Matz») начал работу над Ruby в 1993 году, первый публичный релиз — 1995 год. Ruby 1.8 (2003) стал широко используемым. Ruby on Rails создан Дэвидом Хайнемайером Ханссоном (DHH) в 2004 году и опубликован как open source в 2004 году. Rails 1.0 вышел в 2005 году. Популярность Ruby достигла пика около 2007-2012 годов. Ruby 2.0 (2013) ввёл именованные аргументы и lazy enumerators. Ruby 3.0 (2020) объявлено «3 раза быстрее Ruby 2» по отдельным задачам. Ruby 3.3 (2023) — JIT через YJIT (Yet Another JIT, разработан Shopify).
Ruby в хостинге
Для Ruby/Rails нужен VPS или выделенный сервер — shared hosting поддерживает Ruby редко. Типичный стек: nginx → Puma (Ruby HTTP-сервер) → Rails-приложение → PostgreSQL. Managed PaaS для Rails: Heroku, Render, Railway, Fly.io. В Docker: официальный образ ruby:3.3-slim подходит для production. Деплой через Capistrano или rsync+скрипты.
Ruby: Rails и современные паттерны
Ruby on Rails 7.x — актуальная версия с Hotwire (Turbo + Stimulus) для реактивных UI без SPA-архитектуры. Основной хостинг-стек для Rails: Puma (multi-threaded web server) + nginx (reverse proxy) + PostgreSQL + Redis (для Sidekiq background jobs). Контейнеризация: Docker с официальным ruby:3.x-alpine образом, минимальный размер образа 200-300 МБ.
Деплой на VPS: Capistrano — классический инструмент деплоя Ruby-приложений через SSH (zero-downtime deployment через symlinks), Kamal (от команды Rails) — современный инструмент деплоя через Docker без Kubernetes. Bunny/Sneakers для обработки RabbitMQ-очередей. Производительность: MRI Ruby (CRuby) ограничен GIL — параллелизм только через форкинг или Ractors (Ruby 3.x). JRuby и TruffleRuby — альтернативы без GIL.
На что обращать внимание
GIL (Global Interpreter Lock) в CRuby ограничивает параллельный CPU-bound код в потоках — для параллелизма используют несколько процессов. На Linux-серверах это реализуется через systemd или supervisord с несколькими воркерами (Puma с кластер-режимом). Ruby потребляет заметно больше памяти, чем Python или PHP при аналогичных задачах: Rails-приложение минимально — 200-400 МБ. Версии Ruby управляются через rbenv или RVM — не устанавливайте системный Ruby для production.
Ruby и СУБД
Ruby on Rails использует ActiveRecord ORM, который поддерживает PostgreSQL, MySQL/MariaDB, SQLite. PostgreSQL — рекомендуемый выбор для Rails production из-за поддержки hstore, JSONB, array-типов, которые ActiveRecord умеет использовать нативно. Миграции базы данных управляются через rails db:migrate. Rails 7+ поддерживает Trilogy — быстрый MySQL-адаптер от GitHub.