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

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

このガイドの内容:

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

1 すぐできる方法

Rails development boxにある準備済みのdevelopment環境を入手するのがおすすめです。

2 個別にインストールする方法

Rails development boxを利用できない事情がある場合は、この先をお読みください。Ruby on Railsコア開発で必要なdevelopment boxを手動でビルドする手順を解説します。

2.1 Gitをインストールする

Ruby on Railsではソースコード管理にGitを使っています。インストール方法についてはGitホームページに記載されています。Gitを学べる以下のような多数の資料があります(特記ないものは英語)。

  • Try Git courseは、対話的な操作のできるコースで基礎を学べます。
  • Git公式ドキュメントには多くの情報がまとめられており、Gitの基礎を学べる動画もあります。
  • Everyday Gitは最小限必要なGitの知識を学ぶのに向いています。
  • GitHubにはさまざまなGit関連リソースへのリンクがあります。
  • Pro 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、FFmpeg、muPDF、またmacOSではXQuartzとPopplerにも依存
  • Active Support: memcached、Redisに依存
  • Railties: JavaScriptランタイム環境(Node.jsなど)に依存

機能を変更したいgemを正しくテストするには、そのgemが依存するサービスをすべてインストールする必要があります。

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.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

# 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
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

# 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
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
$ 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

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

$ pkg install sqlite3 mysql80-client mysql80-server postgresql11-client postgresql11-server memcached imagemagick ffmpeg mupdf yarn libxml2
# portmaster databases/redis

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

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

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

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

MySQLでテストスイートを実行可能にするには、testデータベースに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で、開発用アカウントをdevelopment環境にセットアップするには、以下を実行するだけで済みます。

$ sudo -u postgres createuser --superuser $USER

macOSの場合は以下です。

$ createuser --superuser $USER

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

$ cd activerecord
$ bundle exec rake db:create

PostgreSQL 9.1.x以前でHStore拡張を有効にすると、"WARNING: => is deprecated as an operator"という警告が表示されます(メッセージはローカライズされる可能性もあります)。

以下を実行すると、データベースエンジンごとに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 Bundler gemをインストールする

Bundlerの最新バージョンをインストールします。

$ gem install bundler
$ gem update bundler

次に以下を実行します。

$ 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. このエントリーをはてなブックマークに追加