【Railsチュートリアルでは教えてくれない】rails new コマンドの正しいやり方

# この記事の目的

Ruby on Railsを使ったアプリケーションの開発の経験がある方であれば、一度は[Railsチュートリアル](https://railstutorial.jp/)を読んだことがある人が多いのではないでしょうか。RailsチュートリアルはRailsの入門記事としては、内容が非常に充実しているため高く評価されており、私もRailsチュートリアルを読み、Webアプリケーション開発における基礎を学びました。

しかしながら、いざ、自分でアプリケーションを作ろうと思うと、Railsチュートリアルには載っていないけれども、Railsで開発をするならば知っておきたかったなあ、と思うような知識がたくさん出てきました。

例えば、Railsチュートリアルではテストのためにminitestを使っておりますが、実際の開発ではRSpecを使うことが主流になっており、いざ開発を始めてみると、ギャップを感じた方もいるのではないでしょうか。

この記事では、Railsチュートリアルを一通り終えたぐらいの知識を持った方を対象として、チュートリアルから実際の開発の間にある、知識のギャップを埋められるような情報をお伝えできればと考えています。もちろんRailsチュートリアルを読んだことがないかたでも読み進められるように、初歩的な知識から埋めていきますので、安心してください！

今回は、Railsプロジェクトを始めるために実行する「rails new」コマンドについて、Railsチュートリアルには載っていないけれども、是非実践してほしいおすすめの手順を書いていきます。


# 動作環境

当然ながらRubyがインストールされていることが前提です。以下のコマンドで、Rubyのバージョンが表示されれば、大丈夫でしょう。私はrbenvを使っていますが、今回の記事ではバージョン管理ツールは特に影響ないかと思います。また、OSはMacOSを使用しております。

```
$ ruby -v

ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

$ sw_vers

ProductName:	Mac OS X
ProductVersion:	10.12.5
BuildVersion:	16F73
```


# 作業手順

- 1. Bundlerをインストールする
- 2. プロジェクトフォルダを作り、BundlerでGemfileを作る
- 3. GemfileでRailsのバージョンを指定し、Bundlerでgemのインストール
- 4. rails newを実行
- 5. gitignoreファイルの編集


# 1. Bundlerをインストールする

まずは[Bundler](http://bundler.io/)をインストールしましょう。

Railsの開発を進めていく上で、必要なgemのインストールや実行は、基本的にBundlerを使って実行することになりますので、必ずインストールしましょう。

すでにインストールされている方も多いかと思いますので、以下のコマンドを打ってバージョン情報が返ってくれば、インストールは必要ありません。

```
$ bundler -v

Bundler version 1.14.6
```

まだインストールしてない方は以下のコマンドでインストールを行いましょう。

```
$ gem install bundler
```


# 2. プロジェクトフォルダを作り、BundlerでGemfileを作る

bundlerがインストールできたら、開発を行うプロジェクトフォルダを作りましょう。

今回は「sample-app」という名前にします。フォルダを作り、cdコマンドでそのフォルダへ移動します。

```
$ mkdir sample-app
$ cd sample-app
```

フォルダを作ったら、bundlerを使ってGemfileを作りましょう。これもコマンド一発で大丈夫です。

```
$ bundle init
```


# 3. GemfileでRailsのバージョンを指定し、Bundlerでインストール

bundle init を実行してできたGemfileを編集して、インストールするRailsのバージョンを指定しておきましょう。今回はバージョン5.1.1を指定します。

``` ruby:Gemfile
# frozen_string_literal: true
source "https://rubygems.org"

gem "rails", "5.1.1"

```

Gemfileを編集したら、Bundlerを使ってRailsをインストールしましょう。

```
$ bundle install --path vendor/bundle
```

ここで注意すべき点は、**オプションで`--path vendor/bundle`を指定すること**です。こうすることで、プロジェクトフォルダ内にvendor/bundleというフォルダが作られ、以降はこのプロジェクト内で使うgemがそのフォルダ内にインストールされるようになります。

こうすることで、別のプロジェクトの開発環境などを汚すことなく、インストールができますので、必ずこのオプションを指定するようにしましょう！

一度オプションを指定すれば、次回以降`bundle install`を実行した際に、vendor/bundleのディレクトリにインストールされますので、このオプションを使うのは最初の１回のみで大丈夫です。

インストールが完了したら、念のため、以下のコマンドでRailsのバージョンを確認しておきましょう。

Bundlerを使ってインストールしたgemは`bundle exec`をつけて実行することで、vendor/bundleのディレクトリ内のgemを実行することができます。今後、railsコマンドを実行するときは、`bundle exec　rails`と打つことで実行することができます。

```
$ bundle exec rails -v

Rails 5.1.1
```


# 4. rails newを実行

さて、いよいよ`rails new`を実行する準備が整いました！Bundlerを使って`rails new`を実行しましょう。

```
$ bundle exec rails new .
```

ここで注意すべき点は、オプションでカレントディレクトリを示す「.」を指定することを忘れないようにしましょう。

途中でGemfileを上書きしても良いか、聞かれるかもしれませんが、Yを入力して続けましょう。

コマンドが完了したら`bundle exec rails s`でサーバーを立ち上げてみましょう。http://localhost:3000 にアクセスして、「Yay! You’re on Rails!」のメッセージが表示されていれば、OKです！


# 5. gitignoreファイルの編集

さて、最後に.gitignoreを編集しておきましょう。

Bundler経由でインストールしたgemはvendor/bundleにインストールされることは、前述したとおりですが、このディレクトリをgit の管理下に入れてしまうと、リポジトリが肥大化してしまいますので、gitでの管理から必ず外すようにしましょう。

以下のように.gitignoreに追記しておきます。

```:.gitignore
/vendor/bundle
```

以上でRailsで開発する環境は整いました！


# 参考にした記事

[rails newの先輩オススメ手順](http://maetoo11.hatenablog.com/entry/2016/03/04/144216)
[rails new 手順書](http://qiita.com/youcune/items/312178c54c65f3ab4d42)