Rails コア開発環境の構築方法

本ガイドでは、Ruby on Rails自体の開発環境を構築する方法について解説します。

このガイドの内容:

  • 自分のPCをRails開発用にセットアップする方法
  • Railsのテストスイートの中から特定のグループを実行する方法
  • RailsテストスイートのうちActive Recordに関する部分の動作

1 環境を構築する他の方法について

ローカルマシンでRailsを開発用にセットアップしたくない場合は、Codespaces、VS Code Remote Plugin、またはrails-dev-boxを利用できます。これらのオプションについて詳しくはこちらを参照してください。

2 ローカル開発環境のセットアップ

Ruby on Railsを自分のコンピュータ上で開発したい場合は、以下の手順を参照してください。

2.1 Gitをインストールする

Ruby on Railsではソースコード管理にGitを使っています。インストール方法についてはGitホームページに記載されています。Gitを学べる資料はインターネット上に多数あります。

2.2 Ruby on Railsリポジトリをクローンする

Ruby on Railsのソースコードを置きたいディレクトリ(ここに独自railsサブディレクトリが作成されます)で以下を実行します。

$ git clone https://github.com/rails/rails.git
$ cd rails

2.3 追加のツールやサービスをインストールする

Railsのテストの中には追加のツールに依存しているものもあります。そうしたテストを実行するには、これらのツールを手動でインストールしておく必要があります。

以下のリストは、Railsのgemごとに必要な追加の依存関係です。

  • Action Cable: Redisに依存
  • Active Record: SQLite3、MySQL、PostgreSQLに依存
  • Active Storage: Yarn(YarnはさらにNode.jsに依存)、ImageMagick、libvips、FFmpeg、muPDFに依存 macOSではXQuartzにも依存
  • Active Support: memcached、Redisに依存
  • Railties: JavaScriptランタイム環境(Node.jsなど)に依存

機能を変更したいgemを正しくテストするには、そのgemが依存するサービスをすべてインストールする必要があります。macOS、Ubuntu、Fedora/CentOS、Arch Linux、FreeBSDの各サービスのインストール方法について詳しくは後述します。

Redisのドキュメントでは、パッケージマネージャによるRedisインストールは推奨されていません(パッケージマネージャーが古いため)。Redisをソースからインストールしてサーバーを立ち上げる方法については、Redisドキュメントに詳しく記載されています。

Active Recordのテストは、少なくともMySQLとPostgreSQLとSQLite3で必ずパスしなければなりません。 単一のアダプタでしかテストされていないパッチは却下されます(変更とテストの内容が特定のアダプタに限定されない場合を除く)。

以下は、OSごとの追加ツールのインストール方法です。

2.3.1 macOS

macOSの場合は、必要な追加ツールをHomebrewですべてインストールできます。

ツールをすべてインストールするには、クローンしたRailsディレクトリで以下を実行します。

$ brew bundle

インストールしたサービスを起動する必要もあります。サービスをすべて起動するには以下を実行します。

$ brew services list

サービスを個別に起動するには、以下のように実行します。

$ brew services start mysql

上のコマンドのmysqlは、起動したいサービス名に置き換えます。

2.3.1.1 潜在的な問題

このセクションでは、macOSのネイティブ拡張機能、特にローカル開発でmysql2 gemをバンドルする場合に遭遇する可能性のある問題について詳しく説明します。AppleがRailsの開発者環境に変更を加えたため、このドキュメントは今後変更される可能性や正確でない可能性があります。

macOSでmysql2 gemをコンパイルするためには、以下が必要です。

  1. openssl@1.1がインストール済みであること(openssl@3ではない)
  2. Rubyがopenssl@1.1でコンパイルされていること
  3. mysql2用のbundle config内でコンパイラフラグが設定されていること

openssl@1.1openssl@3の両方がインストールされている場合は、Railsが mysql2をバンドルするために、Rubyにopenssl@1.1を利用するように指示する必要があります。

.bash_profileで、以下のようにPATHRUBY_CONFIGURE_OPTSopenssl@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/configmysql2を次のように設定します。このとき、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開発環境が動作するようになるはずです。

2.3.2 Ubuntu

以下を実行すると、すべての依存関係をインストールできます。

$ 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

# Yarnをインストールする
# Node.jsがインストールされない場合は以下のコマンドを使う
# 参考: https://github.com/nodesource/distributions#installation-instructions
$ sudo mkdir -p /etc/apt/keyrings
$ curl --fail --silent --show-error --location https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
$ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
$ sudo apt-get update
$ sudo apt-get install -y nodejs

# Node.jsをインストール済みの場合は、以下のコマンドでyarn npmパッケージをインストールする
$ sudo npm install --global yarn
2.3.3 FedoraまたはCentOS

以下を実行すると、すべての依存関係をインストールできます。

$ 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

# Yarnをインストールする
# Node.jsをインストールしていない場合はこのコマンドを使う
# 参考: https://github.com/nodesource/distributions#installation-instructions-1
$ sudo dnf install https://rpm.nodesource.com/pub_20/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y
$ sudo dnf install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1

# Node.jsをインストール済みの場合は以下のコマンドでyarn npmパッケージをインストールする
$ sudo npm install --global yarn
2.3.4 Arch Linux

以下を実行すると、すべての依存関係をインストールできます。

$ 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

MySQLはArch Linuxではサポートされなくなったので、代わりにMariaDBをインストールする必要があります(Arch Linuxのお知らせを参照)。

2.3.5 FreeBSD

以下を実行すると、すべての依存関係をインストールできます。

$ sudo pkg install sqlite3 mysql80-client mysql80-server postgresql11-client postgresql11-server memcached imagemagick6 ffmpeg mupdf yarn libxml2 vips poppler-utils
# portmaster databases/redis

portsですべてのツールをインストールすることも可能です(パッケージはdatabasesフォルダに保存されます)。

MySQLのインストールで発生する問題については、MySQLドキュメントを参照してください。

2.3.6 Debian

以下を実行すると、すべての依存関係をインストールできます。

$ sudo apt-get install sqlite3 libsqlite3-dev default-mysql-server default-libmysqlclient-dev postgresql postgresql-client postgresql-contrib libpq-dev redis-server memcached imagemagick ffmpeg mupdf mupdf-tools libxml2-dev libvips42 poppler-utils

DebianのデフォルトのMySQLサーバーはMariaDBなので、何らかの違いが生じる可能性にご注意ください。

2.4 データベースを設定する

Active Recordのテストを実行するのに必要なデータベースエンジンごとに、追加の設定手順がいくつか必要になります。

PostgreSQLの認証方法は異なります。LinuxまたはBSDで、開発用アカウントをdevelopment環境にセットアップするには、以下を実行するだけで済みます。

$ sudo -u postgres createuser --superuser $USER

macOSの場合は以下です。

$ createuser --superuser $USER

MySQLはデータベースの作成時点でユーザーを作成します。このタスクでは、ユーザがパスワードなしのrootであると仮定しています。

続いて、MySQLとPostgreSQLそれぞれについて以下を実行し、testデータベースを追加する必要があります。

$ cd activerecord
$ bundle exec rake db:create

以下を実行すると、データベースエンジンごとにtestデータベースを作成できます。

$ cd activerecord
$ bundle exec rake db:mysql:build
$ bundle exec rake db:postgresql:build

データベースを削除するには以下を実行します。

$ cd activerecord
$ bundle exec rake db:drop

上のrakeタスクでtestデータベースを作成すると、文字セットとコレーション(照合順序)が正しく設定されます。

他のデータベースを使っている場合は、activerecord/test/config.ymlまたはactiverecord/test/config.example.ymlでデフォルトの接続情報があるかどうかをチェックしてください。別のcredential(認証情報)が必要な場合はローカルコンピュータでactiverecord/test/config.ymlを変更することでできますが、この変更はRailsの更新に含めてはいけません。

2.5 JavaScriptの依存関係をインストールする

Yarnをインストールした場合は、以下を実行してJavaScriptの依存関係をインストールする必要があります。

$ yarn install

2.6 依存するgemをインストールする

gemは、Rubyにデフォルトで同梱されているBundlerでインストールします。

RailsのGemfileに記載されているgemをインストールするには、以下を実行します。

$ bundle install

または、Active Recordのテストを実行する必要がない場合は、以下を実行します。

$ bundle install --without db

2.7 Railsに貢献する

設定がすべて完了したら、ガイドのRuby on Rails に貢献するをお読みください。

フィードバックについて

Railsガイドは GitHub の yasslab/railsguides.jp で管理・公開されております。本ガイドを読んで気になる文章や間違ったコードを見かけたら、気軽に Pull Request を出して頂けると嬉しいです。Pull Request の送り方については GitHub の README をご参照ください。

原著における間違いを見つけたら『Rails のドキュメントに貢献する』を参考にしながらぜひ Rails コミュニティに貢献してみてください 🛠💨✨

本ガイドの品質向上に向けて、皆さまのご協力が得られれば嬉しいです。

Railsガイド運営チーム (@RailsGuidesJP)

支援・協賛

Railsガイドは下記の協賛企業から継続的な支援を受けています。支援・協賛にご興味あれば協賛プランからお問い合わせいただけると嬉しいです。

  1. Star
  2. このエントリーをはてなブックマークに追加