Это руководство раскрывает, как настроить среду для разработки ядра Ruby on Rails.
После прочтения этого руководства, вы узнаете:
Если вы не хотите настраивать Rails для разработки на локальной машине, можно использовать Codespaces, плагин VS Code Remote или rails-dev-box. Больше об этих опциях можно прочитать здесь.
Если хотите разрабатывать Ruby on Rails локально на своей машине, выполните следующие шаги.
Ruby on Rails использует Git для контроля кода. На домашней странице Git есть инструкции по установке. Также есть ряд онлайн ресурсов, которые помогут познакомиться с Git.
Перейдите в папку, в которую вы хотите скачать исходный код Ruby on Rails (он создаст свою собственную поддиректорию rails
), и запустите:
$ git clone https://github.com/rails/rails.git
$ cd rails
Некоторые тесты Rails зависят от дополнительных инструментов, которые необходимо установить перед запуском этих определенных тестов.
Вот список дополнительных зависимостей каждого гема:
Установите все зависимости, которые необходимы для надлежащего тестирования гема, в который вы будете вносить изменения. Как установить эти сервисы для macOS, Ubuntu, Fedora/CentOS, Arch Linux и FreeBSD, рассказано ниже.
Документация Redis отговаривает от установки с помощью пакетных менеджеров, так как они обычно устаревшие. Установка из источника и настройка сервера прямолинейны и хорошо документированы в документации Redis.
Тесты Active Record обязаны проходить как минимум для MySQL, PostgreSQL и SQLite3. Ваш патч будет отвергнут, если он был протестирован только для единственного адаптера, если только изменение и тесты не специфичные для адаптера.
Ниже приведены инструкции, как установить все дополнительные инструменты для различных операционных систем.
На macOS можно использовать Homebrew для установки всех дополнительных инструментов.
Чтобы все установить, запустите
$ brew bundle
Также нужно запустить каждый из установленных сервисов. Чтобы отобразить все доступные сервисы, запустите:
$ brew services list
Затем можно запустить каждый из этих сервисов один за другим подобным образом:
$ brew services start mysql
Замените mysql
именем того сервиса, который вы хотите запустить.
Этот раздел описывает некоторые потенциальные проблемы, с которыми вы можете столкнуться при использовании нативных расширений macOS, в частности при установке гема mysql2 при локальной разработке. Эта документация является предметом для изменения, и может быть некорректной, если Apple внесет изменения в среду разработки для Rails.
Чтобы скомпилировать гем mysql2
на macOS, нужно сделать следующее:
1) Установить openssl@1.1
(не openssl@3
)
2) Скомпилировать Ruby с openssl@1.1
3) Установить флаги компилятора в конфигурации bundle для mysql2
.
Если установлены оба openssl@1.1
и openssl@3
, нужно сообщить Ruby использовать openssl@1.1
, для того, чтобы Rails установил mysql2
.
В вашем .bash_profile
установите PATH
и RUBY_CONFIGURE_OPTS
указывающим на openssl@1.1
:
export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"
В ~/.bundle/config
установите следующее для mysql2
. Убедитесь, что удалили все другие вхождения для BUNDLE_BUILD__MYSQL2
:
BUNDLE_BUILD__MYSQL2: "--with-ldflags=-L/usr/local/opt/openssl@1.1/lib --with-cppflags=-L/usr/local/opt/openssl@1.1/include"
Установив эти флажки до установки Ruby и установки Rails, вы сможете получить работающую локальную среду разработки на macOS.
Чтобы все установить, запустите:
$ sudo apt-get update
$ sudo apt-get install sqlite3 libsqlite3-dev mysql-server libmysqlclient-dev postgresql postgresql-client postgresql-contrib libpq-dev redis-server memcached imagemagick ffmpeg mupdf mupdf-tools libxml2-dev libvips42 poppler-utils
# Install Yarn
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get install yarn
Чтобы все установить, запустите:
$ sudo dnf install sqlite-devel sqlite-libs mysql-server mysql-devel postgresql-server postgresql-devel redis memcached imagemagick ffmpeg mupdf libxml2-devel vips poppler-utils
# Install Yarn
# Используйте эту команду, если у вас нет установленной Node.js
$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
# Если у вас есть установленная Node.js, используйте эту команду
$ curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
$ sudo dnf install yarn
Чтобы все установить, запустите:
$ sudo pacman -S sqlite mariadb libmariadbclient mariadb-clients postgresql postgresql-libs redis memcached imagemagick ffmpeg mupdf mupdf-tools poppler yarn libxml2 libvips poppler
$ sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
$ sudo systemctl start redis mariadb memcached
Если вы запускаете на Arch Linux, MySQL больше не поддерживается, поэтому вам нужно вместо него использовать MariaDB (смотрите этот анонс).
Чтобы все установить, запустите:
$ sudo pkg install sqlite3 mysql80-client mysql80-server postgresql11-client postgresql11-server memcached imagemagick6 ffmpeg mupdf yarn libxml2 vips poppler-utils
# portmaster databases/redis
Или установить все с помощью портов (эти пакеты расположены в папке databases
).
Если у вас проблемы при установке MySQL, обратитесь к документации MySQL.
Имеется ряд дополнительных шагов, необходимых для конфигурации движка баз данных, требуемых для запуска тестов Active Record.
Аутентификация PostgreSQL работает по-другому. Чтобы настроить среду разработки для своего аккаунта на Linux или BSD, просто запустите:
$ sudo -u postgres createuser --superuser $USER
и для macOS:
$ createuser --superuser $USER
MySQL создаст пользователей при создании баз данных. Задача предполагает, что ваш пользователь root
без пароля.
Затем нужно создать тестовые базы данных для MySQL и PostgreSQL с помощью:
$ bundle exec rake db:create
Можно создать тестовые базы данных для каждого движка базы данных отдельно:
$ cd activerecord
$ bundle exec rake db:mysql:build
$ bundle exec rake db:postgresql:build
Можно удалить базы данных с помощью:
$ cd activerecord
$ bundle exec rake db:drop
Использование задачи Rake для создания тестовых баз данных позволяет убедиться, что они имеют правильные кодировки и сортировки.
Если вы используете другую базу данных, ищите в файле activerecord/test/config.yml
или activerecord/test/config.example.yml
информацию по соединению по умолчанию. Можно отредактировать activerecord/test/config.yml
, чтобы представить другие учетные данные для вашей машины, но, очевидно, вы не должны отправлять такие изменения обратно в Rails.
Документация Redis отговаривает от установки с помощью пакетных менеджеров, так как они обычно устаревшие. Установка из исходников и запуск сервера просто и хорошо документированы в документации Redis.
Если вы установили Yarn, необходимо установить зависимости JavaScript:
$ cd activestorage
$ yarn install
Гемы устанавливаются с помощью Bundler, который поставляется вместе с Ruby.
Чтобы установить Gemfile для Rails, запустите:
$ bundle install
Если вы не хотите запускать тесты Active Record, можно запустить:
$ bundle install --without db
После того, как вы все настроили, прочитайте, как можно начать вносить свой вклад.