Это руководство раскрывает, как настроить среду для разработки ядра Ruby on Rails.
После прочтения этого руководства, вы узнаете:
Простейшим и рекомендованным способом получить среду разработки, готовую для программирования, является использование Rails development box.
В случае, если нет возможности использовать Rails development 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 зависят от дополнительных инструментов, которые необходимо установить перед запуском этих определенных тестов.
Вот список дополнительных зависимостей каждого гема:
Установите все зависимости, которые необходимы для надлежащего тестирования гема, в который вы будете вносить изменения.
Документация Redis отговаривает от установки с помощью пакетных менеджеров, так как они обычно устаревшие. Установка из источника и настройка сервера прямолинейны и хорошо документированы в документации Redis.
Тесты Active Record обязаны проходить как минимум для MySQL, PostgreSQL и SQLite3. Неуловимые различия между различными адаптерами были причинами отклонения многих изменений, которые неплохо выглядели при тестировании только для одного адаптера.
Ниже приведены инструкции, как установить все дополнительные инструменты для различных ОС.
На macOS можно использовать Homebrew для установки всех дополнительных инструментов.
Чтобы все установить, запустите
$ brew bundle
Также нужно запустить каждый из установленных сервисов. Чтобы отобразить все доступные сервисы, запустите:
$ brew services list
Затем можно запустить каждый из этих сервисов один за другим подобным образом:
$ brew services start mysql
Замените mysql
именем того сервиса, который вы хотите запустить.
Чтобы все установить, запустите:
$ 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
# 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
# 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
$ sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
$ sudo systemctl start redis mariadb memcached
Если вы запускаете на Arch Linux, MySQL больше не поддерживается, поэтому вам нужно вместо него использовать MariaDB (смотрите этот анонс).
Чтобы все установить, запустите:
$ pkg install sqlite3 mysql80-client mysql80-server postgresql11-client postgresql11-server memcached imagemagick ffmpeg mupdf yarn libxml2
# portmaster databases/redis
Или установить все с помощью портов (эти пакеты расположены в папке databases
).
Если у вас затруднения при установке MySQL, обратитесь к документации MySQL.
Имеется ряд дополнительных шагов, необходимых для конфигурации движка баз данных, требуемых для запуска тестов Active Record.
Чтобы иметь возможность запускать тестовый набор на MySQL, необходимо создать пользователя с именем rails
с привилегиями на тестовые базы данных:
$ mysql -uroot -p
mysql> CREATE USER 'rails'@'localhost';
mysql> GRANT ALL PRIVILEGES ON activerecord_unittest.*
to 'rails'@'localhost';
mysql> GRANT ALL PRIVILEGES ON activerecord_unittest2.*
to 'rails'@'localhost';
mysql> GRANT ALL PRIVILEGES ON inexistent_activerecord_unittest.*
to 'rails'@'localhost';
Аутентификация PostgreSQL работает по-другому. Чтобы настроить среду разработки для своего аккаунта на Linux или BSD, просто запустите:
$ sudo -u postgres createuser --superuser $USER
и для macOS:
$ createuser --superuser $USER
Затем нужно создать тестовые базы данных для MySQL и PostgreSQL с помощью:
$ bundle exec rake db:create
Вы увидите следующее предупреждение (или локализованное предупреждение) при активации расширения HStore в PostgreSQL 9.1.x или ранее: "WARNING: => is deprecated as an operator".
Можно создать тестовые базы данных для каждого движка базы данных отдельно:
$ 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
$ gem install bundler
$ gem update bundler
и запустите:
$ bundle install
или:
$ bundle install --without db
если вы не хотите запускать тесты Active Record.
После того, как вы все настроили, прочитайте, как можно начать вносить свой вклад.