本ガイドでは、Ruby on Rails自体の開発環境を構築する方法について解説します。
このガイドの内容:
Rails development boxにあるできあいのdevelopment環境を入手するのがおすすめです。
Rails development boxを利用できない事情がある場合は、この先をお読みください。Ruby on Railsコア開発で必要なdevelopment boxを手動でビルドする手順を解説します。
Ruby on Railsではソースコード管理にGitを使用しています。インストール方法についてはGitホームページに記載されています。Gitを学ぶための資料はネット上に山ほどあります (特記ないものは英語)。
Ruby on Railsのソースコードを置きたいディレクトリ (そこにrails
ディレクトリが作成されます) で以下を実行します。
$ git clone https://github.com/rails/rails.git $ cd rails
リポジトリに送信されるコードは、テストスイートにパスしなければなりません。自分でパッチを書いた場合や、他の人が書いたパッチを詳しく評価する場合にも、テストを実行できるようにしておく必要があります。
最初にSQLite3をインストールし、sqlite3
gem用のSQLite3開発ファイルもインストールします。macOSの場合は以下を実行します。
$ brew install sqlite3
Ubuntuなら以下で行えます。
$ sudo apt-get install libsqlite3x libsqlite3x-devel
FedoraやCentOSの場合は以下を実行します。
$ sudo yum install sqlite3 sqlite3-devel
Arch Linuxなら以下を実行する必要があります。
$ sudo pacman -S sqlite
FreeBSDの場合は以下を実行します。
# pkg install sqlite3
あるいはdatabases/sqlite3
のportsをコンパイルします。
Bundlerの最新バージョンを入手します。
$ gem install bundler $ gem update bundler
続いて以下を実行します。
$ bundle install --without db
このコマンドによって、MySQLとPostgreSQL用のRubyドライバを除いて必要なファイルがすべてインストールされます。続きは後ほど行います。
memcachedを使用するテストを実行したい場合は、memcachedがインストールされ、実行可能であることを確認する必要があります。
macOSの場合、Homebrewを使ってmemcachedをインストールできます。
$ brew install memcached
Ubuntuの場合はapt-getを使用できます。
$ sudo apt-get install memcached
FedoraやCentOSの場合はyumを使用します。
$ sudo yum install memcached
Arch Linuxの場合は以下のようにします。
$ sudo pacman -S memcached
FreeBSDの場合は以下のようにします。
# pkg install memcached
あるいはdatabases/memocached
のportsをコンパイルすることもできます。
依存ファイルのインストールがこれで終わったので、以下のコマンドでテストスイートを実行します。
$ bundle exec rake test
Action Packなど、特定のコンポーネントのテストだけを実行することもできます。該当のディレクトリに移動して同じコマンドを実行します。
$ cd actionpack $ bundle exec rake test
特定のディレクトリにあるテストを実行したい場合、TEST_DIR
環境変数を指定できます。たとえば、railties/test/generators
ディレクトリのテストだけを実行したい場合は以下のようにします。
$ cd railties $ TEST_DIR=generators bundle exec rake test
以下の方法で特定のテストだけを実行することもできます。
$ cd actionpack $ bundle exec ruby -Itest test/template/form_helper_test.rb
特定のファイルに含まれるひとつのテストだけを実行するには以下のようにします。
$ cd actionpack $ bundle exec ruby -Itest path/to/test.rb -n test_name
Railtiesテストの一部はJavaScriptランタイム環境に依存しています(Node.jsをインストールする前提など)。
Active Recordのテストスイートの実行は3回試みられます。SQLite3で1回、MySQLで1回、PostgreSQLで1回です。それぞれについて環境構築方法を解説します。
Active Recordのコードに手を付ける場合、最低でもMySQL、PostgreSQL、SQLite3のテストにはすべてパスしなければなりません。MySQLでしかテストを行なっていないようなパッチは、一見問題なさそうに見えても、さまざまなアダプタごとの微妙な違いに対応しきれていないことが非常に多く、ほとんどの場合受理されません。
Active Recordテストスイートでは、activerecord/test/config.yml
というカスタム設定ファイルが必要です。設定例はactiverecord/test/config.example.yml
に記載されているので、これをコピーして各環境で使用できます。
MySQLとPostgreSQLに対してテストスイートを実行できるようにするには、そのためのgemも必要です。最初にサーバーをインストールし、次にクライアントライブラリをインストール、そして開発用ファイルをインストールします。
macOSの場合、以下を実行できます。
$ brew install mysql $ brew install postgresql
詳しくはHomebrewのヘルプを参照してください。
Ubuntuの場合は以下を実行します。
$ sudo apt-get install mysql-server libmysqlclient-dev $ sudo apt-get install postgresql postgresql-client postgresql-contrib libpq-dev
FedoraやCentOSの場合は以下を実行します。
$ sudo yum install mysql-server mysql-devel $ sudo yum install postgresql94-server postgresql94-devel
Arch LinuxではMySQLがサポート対象外になったため、MariaDBを代わりに使用します (詳細はMariaDB replaces MySQL in repositoriesを参照)。
$ sudo pacman -S mariadb libmariadbclient mariadb-clients $ sudo pacman -S postgresql postgresql-libs
FreeBSDの場合は以下を実行する必要があります。
# pkg install mysql56-client mysql56-server # pkg install postgresql93-client postgresql93-server
Portsを使用してインストールすることもできます (databases
フォルダの下に置かれます)。
MySQLのインストール中に問題が生じた場合は、MySQLドキュメント (英語) を参照してください。
以上の設定が終わったら、以下を実行します。
$ rm .bundle/config $ bundle install
最初に、.bundle/config
を削除します。これは、インストールしたくない"db"グループのファイルをBundlerが覚えてしまっているのを消去するためです。ファイルを削除する代わりに編集しても構いません。
MySQLでテストスイートを実行できるようにするには、データベースにrails
というユーザーアカウントを作成し、このアカウントにtestデータベースへのアクセス権を与える必要があります。
$ 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';
続いてtestデータベースを作成します。
$ cd activerecord $ bundle exec rake db:mysql:build
PostgreSQLでは認証方法が異なります。LinuxやBSDでdevelop環境にdevelopmentアカウントを設定するには、以下を実行します。
$ sudo -u postgres createuser --superuser $USER
macOSの場合は以下を実行します。
$ createuser --superuser $USER
続いて以下を実行してtestデータベースを作成します。
$ cd activerecord $ bundle exec rake db:postgresql:build
PostgreSQLとMySQLの両方を使用するデータベースをビルドすることもできます。
$ cd activerecord $ bundle exec rake db:create
データベースを消去(drop)するには以下を実行します。
$ cd activerecord $ bundle exec rake db:drop
testデータベースの作成にはRakeタスクを使用してください。これにより、文字セットと照合順序が正しく設定されます。
PostgreSQL 9.1.x 以前のHStore拡張機能を有効にしようとすると次のような警告 (メッセージはローカライズされることもあります) が表示されます: 「WARNING: => is deprecated as an operator」
他のデータベースを採用する場合は、activerecord/test/config.yml
やactiverecord/test/config.example.yml
にデフォルトの接続情報があることをチェックしてください。必要であればactiverecord/test/config.yml
を編集して、認証情報を別のものに変更することもできます。ただし、この臨時の認証情報をRailsのリポジトリに反映しないよう気を付けてください。
Action CableではデフォルトのサブスクリプションアダプタとしてRedisを用います(詳細)。このため、Action CableのテストがパスするにはRedisをインストールして実行中にしておく必要があります。
Redisのドキュメントに記載されている、パッケージマネージャによるインストール方法は古いものが多い点が残念です。ソースからインストールしてサーバーを立ち上げる方式の方が単純明快であり、Redisのドキュメントにも詳しく記載されています。
macOSの場合は以下を実行できます。
$ brew install redis
後はHomebrewが表示する指示に従って進めます。
Ubuntuの場合は以下を実行するだけで完了します。
$ sudo apt-get install redis-server
FedoraまたはCentOSの場合は以下を実行します(EPELを有効にする必要があります)。
$ sudo yum install redis
Arch Linuxを実行している場合は、以下を実行します。
$ sudo pacman -S redis $ sudo systemctl start redis
FreeBSDユーザーは以下を実行しなければなりません。
# portmaster databases/redis
Active Storageを使う場合、コードベースのセクションで使われているJavaScript依存関係のインストールが必要である点を押さえておくことが重要です。依存関係をインストールするには、YarnというNode.jsパッケージマネージャをシステムで使えるようにしておく必要があります。このパッケージをインストールするには、あらかじめNode.jsをインストールしておく必要があります。
macOSでは以下を実行できます。
brew install yarn
Ubuntuでは以下を実行できます。
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 update && sudo apt-get install yarn
FedoraまたはCentOSの場合は以下を実行します。
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum install yarn
Yarnのインストールが終わったら、最後にactivestorage
ディレクトリの下で以下のコマンドを実行して、依存関係をインストールする必要があります。
yarn install
Railsガイドは GitHub の yasslab/railsguides.jp で管理・公開されております。本ガイドを読んで気になる文章や間違ったコードを見かけたら、気軽に Pull Request を出して頂けると嬉しいです。Pull Request の送り方については GitHub の README をご参照ください。
原著における間違いを見つけたら『Rails のドキュメントに貢献する』を参考にしながらぜひ Rails コミュニティに貢献してみてください 🛠💨✨
本ガイドの品質向上に向けて、皆さまのご協力が得られれば嬉しいです。
Railsガイド運営チーム (@RailsGuidesJP)
Railsガイドは下記の協賛企業から継続的な支援を受けています。支援・協賛にご興味あれば協賛プランからお問い合わせいただけると嬉しいです。