hostprofi.ru
Подобрать хостинг
Термин·буква R

Ruby

краткое определение

Ruby — интерпретируемый объектно-ориентированный язык программирования с фокусом на читаемость и продуктивность разработчика. Создан Юкихиро Мацумото в 1995 году. Известен фреймворком Ruby on Rails (2004), который революционизировал веб-разработку концепцией Convention over Configuration.

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.

Другие термины