RubyGems — стандартный менеджер пакетов для языка Ruby. Gem (джем) — упакованная Ruby-библиотека или приложение, включающая код, документацию и манифест .gemspec с метаданными. RubyGems предустановлен с Ruby с версии 1.9 (2007).
Как работает
Установка gem из репозитория rubygems.org:
gem install rails
gem install nokogiri --version "~> 1.15"
Bundler — инструмент управления зависимостями на уровне проекта (аналог Composer для PHP). Зависимости объявляются в Gemfile:
source "https://rubygems.org"
gem "rails", "~> 7.0"
gem "pg", ">= 1.1"
group :development, :test do
gem "rspec-rails"
end
Команда bundle install разрешает граф зависимостей и создаёт Gemfile.lock с точными версиями. bundle exec запускает команды в контексте конкретных версий из Gemfile.lock.
История
RubyGems разработан Чадом Фаулером, Джимом Вейрихом и другими в 2003 году. В 2009 году gem-команда стала частью стандартной библиотеки Ruby. Bundler создан в 2009 году Карлом Лернером. С 2010 года rubygems.org — центральный репозиторий, заменивший RubyForge. В 2013 году Bundler интегрирован в Ruby on Rails как стандартный инструмент.
Связь с хостингом
Ruby-приложения (Rails) развёртываются на VPS через Passenger (mod_passenger для Apache/Nginx), Puma или Unicorn RACK-сервер. Команда bundle install --without development test устанавливает только production-зависимости. rbenv или RVM позволяют устанавливать несколько версий Ruby на одном сервере. На большинстве виртуальных хостингов Ruby доступен через cPanel Ruby Selector или Phusion Passenger.
Bundler и управление зависимостями
RubyGems — пакетный менеджер Ruby. Bundler управляет gem-зависимостями через Gemfile и Gemfile.lock. bundle install — установка по lock-файлу. bundle exec rails server — запуск с изоляцией версий. Gemfile.lock фиксирует граф зависимостей аналогично composer.lock.
Rails в хостинге
Ruby on Rails на VPS: Nginx → Puma/Unicorn (application server). Puma — многопоточный, рекомендован для Rails 6+. Capistrano — стандарт для деплоя Rails: SSH-копирование, символьные ссылки, rollback. Passenger (Phusion) — альтернатива Puma, устанавливается как модуль Nginx.
Проблемы с производительностью
Ruby MRI GIL (Global Interpreter Lock) ограничивает параллелизм потоков. Для IO-intensive задач GIL не критичен. Sidekiq — фоновые задачи на Redis. Для memory-intensive Rails: мониторить RSS-размер Puma-воркеров через Netdata.
Ruby Version Management
rbenv или RVM для управления версиями Ruby на сервере. Ruby 3.2/3.3 (2022–2023): YJIT компилятор (+15–50% в Rails). chruby — минималистичный альтернатив. Для production Dockerfile: FROM ruby:3.2-alpine. Bundler 2.4+: bundle config set --local deployment true для production.
Ruby on Rails Security
bundler-audit: bundle-audit check --update — CVE-сканирование. brakeman — статический анализатор безопасности Rails. Strong Parameters предотвращают mass assignment. CSRF Protection встроена. Content Security Policy через SecureHeaders gem. Обновления Rails minor версий — по возможности немедленно.