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

RubyGems

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

RubyGems — менеджер пакетов для языка Ruby и инфраструктура для распространения Ruby-библиотек (gems). Включает утилиту командной строки gem и центральный репозиторий rubygems.org. Bundler дополняет RubyGems управлением зависимостями через Gemfile.

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 версий — по возможности немедленно.

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