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 セットアップとテストを行う
リポジトリに送信されるコードは、テストスイートにパスしなければなりません。自分でパッチを書いた場合や、他の人が書いたパッチを詳しく評価する場合にも、テストを実行できるようにしておく必要があります。
最初に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
2.4 Railtiesをセットアップする
Railtiesテストの一部はJavaScriptランタイム環境に依存しています(Node.jsをインストールする前提など)。
2.5 Active Recordをセットアップする
Active Recordのテストスイートの実行は4回試みられます。SQLite3で1回、MySQLの2つのgem(mysql
とmysql2
)でそれぞれ1回、PostgreSQLで1回です。それぞれについて環境構築方法を解説します。
Active Recordのコードに手を付ける場合、最低でもMySQL、PostgreSQL、SQLite3のテストにはすべてパスしなければなりません。MySQLでしかテストを行なっていないようなパッチは、一見問題なさそうに見えても、さまざまなアダプタごとの微妙な違いに対応しきれていないことが非常に多く、ほとんどの場合受理されません。
2.5.1 データベースの設定
Active Recordテストスイートでは、activerecord/test/config.yml
というカスタム設定ファイルが必要です。設定例はactiverecord/test/config.example.yml
に記載されているので、これをコピーして各環境で使用できます。
2.5.2 MySQLとPostgreSQL
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のリポジトリに反映しないよう気を付けてください。
2.6 Action Cableのセットアップ
Action CableではデフォルトのサブスクリプションアダプタとしてRedisを用います(詳細)。このため、Action CableのテストがパスするにはRedisをインストールして実行中にしておく必要があります。
2.6.1 Redisをソースからインストールする
Redisのドキュメントに記載されている、パッケージマネージャによるインストール方法は古いものが多い点が残念です。ソースからインストールしてサーバーを立ち上げる方式の方が単純明快であり、Redisのドキュメントにも詳しく記載されています。
2.6.2 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