- Home »

Установка Ruby on Rails с rbenv на macOS
Если ты разрабатываешь на Ruby on Rails или планируешь развернуть Rails-приложение на продакшене, то знаешь, что управление версиями Ruby — это не просто прихоть, а необходимость. Особенно если у тебя несколько проектов, которые требуют разных версий Ruby, или когда нужно тестировать совместимость с новыми релизами. В этой статье разберём, как правильно настроить rbenv на macOS — один из самых популярных и надёжных менеджеров версий Ruby.
rbenv не просто устанавливает Ruby — он создаёт изолированную среду для каждого проекта, позволяет легко переключаться между версиями и избегать конфликтов зависимостей. Это особенно критично, когда ты работаешь с legacy-кодом, который может крашиться на новых версиях Ruby, или наоборот — хочешь протестировать фичи из свежих релизов.
Зачем rbenv, а не системный Ruby?
Системный Ruby в macOS — это как системный PHP в Linux: работает, но лучше его не трогать. Вот почему rbenv стоит предпочесть встроенному интерпретатору:
- Изоляция проектов: каждый проект может использовать свою версию Ruby
- Простота обновления: обновил rbenv — получил доступ к новым версиям Ruby
- Отсутствие sudo: все gems устанавливаются в пользовательской директории
- Стабильность системы: не сломаешь системные скрипты, которые зависят от системного Ruby
Установка rbenv через Homebrew
Самый простой способ установить rbenv — использовать Homebrew. Если у тебя его ещё нет, то сначала установи:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Теперь устанавливаем rbenv и ruby-build (плагин для компиляции Ruby):
brew install rbenv ruby-build
Настраиваем автоматическую инициализацию rbenv в shell:
# Для bash
echo 'eval "$(rbenv init - bash)"' >> ~/.bash_profile
# Для zsh (стандартный в macOS с Catalina)
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc
Перезагружаем терминал или выполняем:
source ~/.zshrc
Проверка установки и первая настройка
Проверим, что rbenv установлен корректно:
rbenv doctor
Если команда не найдена, установи rbenv-doctor отдельно:
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
Посмотрим, какие версии Ruby доступны для установки:
rbenv install -l
Вывод покажет длинный список доступных версий. Для продакшена обычно выбирают стабильные релизы без суффиксов типа `-rc` или `-preview`.
Установка Ruby и Rails
Установим последнюю стабильную версию Ruby (на момент написания — 3.2.0):
rbenv install 3.2.0
Процесс займёт несколько минут, так как Ruby компилируется из исходников. Кстати, если у тебя Apple Silicon (M1/M2), то компиляция пройдёт заметно быстрее.
Устанавливаем глобальную версию Ruby:
rbenv global 3.2.0
Проверяем, что всё работает:
ruby -v
which ruby
Теперь устанавливаем Rails:
gem install rails
rbenv rehash
Команда `rbenv rehash` нужна после установки gem’ов, которые добавляют исполняемые файлы.
Управление версиями Ruby в проектах
Одна из главных фич rbenv — возможность использовать разные версии Ruby для разных проектов. Создаём новый проект:
mkdir my_rails_app
cd my_rails_app
rbenv local 3.2.0
rails new . --database=postgresql
Команда `rbenv local` создаёт файл `.ruby-version` в текущей директории, который автоматически активирует нужную версию Ruby при входе в проект.
Команда | Описание | Область действия |
---|---|---|
rbenv global 3.2.0 | Устанавливает версию для всей системы | Глобально |
rbenv local 3.1.0 | Устанавливает версию для текущего проекта | Локально (.ruby-version) |
rbenv shell 3.0.0 | Устанавливает версию для текущей сессии | Текущая сессия |
Оптимизация производительности
rbenv может показаться медленным в работе, особенно при автодополнении. Вот несколько способов ускорить его:
# Отключаем автодополнение rbenv (если не используешь)
echo 'export RBENV_DISABLE_COMPLETION=true' >> ~/.zshrc
# Используем только нужные плагины
rbenv hooks exec
Также можешь использовать альтернативные плагины для ruby-build, которые ускоряют компиляцию:
brew install rbenv/tap/openssl-osx-ca
Работа с Gemfile и Bundler
В современной разработке на Rails обязательно используй Bundler для управления зависимостями. rbenv отлично с ним интегрируется:
cd my_rails_app
echo "ruby '3.2.0'" >> Gemfile
bundle install
Bundler автоматически будет использовать версию Ruby, указанную в `.ruby-version` или в Gemfile.
Альтернативы rbenv
Справедливости ради, rbenv — не единственное решение для управления версиями Ruby:
Решение | Плюсы | Минусы |
---|---|---|
rbenv | Простота, стабильность, минимализм | Требует компиляции, нет интеграции с другими языками |
RVM | Gemsets, больше возможностей | Сложность, может конфликтовать с системой |
chruby | Ещё более минималистичен | Меньше возможностей, хуже поддержка |
asdf | Поддержка множества языков | Сложнее настройка, больше зависимостей |
Настройка для продакшена
Когда придёт время деплоить на сервер, rbenv — отличный выбор. Если ты планируешь использовать VPS или выделенный сервер, то rbenv легко настраивается и на Linux:
# На Ubuntu/Debian
sudo apt update
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev
# Установка rbenv
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# Настройка PATH
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
Автоматизация и скрипты
rbenv отлично подходит для автоматизации. Вот пример скрипта для автоматической настройки проекта:
#!/bin/bash
PROJECT_NAME=$1
RUBY_VERSION="3.2.0"
if [ -z "$PROJECT_NAME" ]; then
echo "Usage: $0 "
exit 1
fi
# Создаём директорию проекта
mkdir $PROJECT_NAME
cd $PROJECT_NAME
# Устанавливаем версию Ruby
rbenv local $RUBY_VERSION
# Создаём Rails приложение
rails new . --database=postgresql --skip-git
# Инициализируем git
git init
git add .
git commit -m "Initial commit"
echo "Project $PROJECT_NAME created successfully!"
echo "Ruby version: $(ruby -v)"
echo "Rails version: $(rails -v)"
Также можешь настроить автоматическое обновление rbenv через cron:
# Добавляем в crontab (crontab -e)
0 2 * * 1 cd ~/.rbenv && git pull && cd plugins/ruby-build && git pull
Полезные плагины rbenv
Экосистема rbenv включает множество полезных плагинов:
- rbenv-vars: управление переменными окружения по проектам
- rbenv-gemset: аналог RVM gemsets
- rbenv-update: простое обновление rbenv и плагинов
- rbenv-use: временное переключение версий без изменения .ruby-version
Установка плагина rbenv-update:
git clone https://github.com/rkh/rbenv-update.git "$(rbenv root)"/plugins/rbenv-update
Теперь можешь обновлять rbenv одной командой:
rbenv update
Траблшутинг типичных проблем
Вот самые частые проблемы и их решения:
Проблема: `rbenv: command not found`
Решение: Проверь, что rbenv добавлен в PATH и инициализирован в shell:
echo $PATH | grep rbenv
rbenv doctor
Проблема: Gem не найден после установки
Решение: Выполни rehash:
rbenv rehash
Проблема: Медленная компиляция Ruby
Решение: Используй переменные окружения для оптимизации:
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl) --with-readline-dir=$(brew --prefix readline)"
rbenv install 3.2.0
Мониторинг и логирование
Для продакшена полезно мониторить, какие версии Ruby используются:
#!/bin/bash
# Скрипт для мониторинга версий Ruby в проектах
find ~/projects -name ".ruby-version" -exec sh -c 'echo "Project: $(dirname "$1"), Ruby: $(cat "$1")"' _ {} \;
Также можешь логировать переключения версий, добавив в ~/.zshrc:
rbenv() {
if [ "$1" = "local" ] || [ "$1" = "global" ]; then
echo "$(date): rbenv $*" >> ~/.rbenv_history
fi
command rbenv "$@"
}
Интеграция с IDE
Большинство современных IDE автоматически определяют версию Ruby через rbenv. Для VS Code установи расширение Ruby LSP, для RubyMine — просто укажи путь к интерпретатору:
rbenv which ruby
В JetBrains RubyMine в настройках SDK просто добавь путь `~/.rbenv/versions/3.2.0/bin/ruby`.
Заключение и рекомендации
rbenv — это надёжное и проверенное временем решение для управления версиями Ruby. Он идеально подходит для разработки на macOS и легко переносится на продакшн-серверы. Главные преимущества:
- Простота установки и настройки
- Отсутствие магии — всё прозрачно и понятно
- Стабильность и надёжность
- Хорошая интеграция с современными инструментами разработки
Используй rbenv, если тебе нужно простое и надёжное решение без лишних сложностей. Если работаешь с множеством языков программирования, присмотрись к asdf. Если нужны продвинутые возможности типа gemsets — изучи RVM.
Для продакшн-серверов rbenv — отличный выбор. Он не добавляет лишних зависимостей и легко автоматизируется. Главное — не забывай регулярно обновлять как сам rbenv, так и установленные версии Ruby, следуя релизам безопасности.
Полезные ссылки:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.