Ruby 2.6.5 and Rails 6.0.2 - Installing on Windows 10

# 概要

Windows 10環境にRubyとRailsをインストールしたときのメモです。MSYS2のインストール時に少し手間取ったので、記録の意味で記事にしました。

**環境**

* Windows 10 Professional
* Ruby 2.6.5 with Devkit
* Rails 6.0.2.1

# 事前にインストールの必要なプログラム

Railsでプロジェクトを作成し起動するのに、事前にインストールしておく必要のあるプログラムです。
バージョンの確認はそれぞれコマンドプロンプトから行いました。

## Git

Windowsなので`Git for Windows`をインストールします。（インストール方法は省略します。）

```console
> git --version
git version 2.25.1.windows.1
```

## Node.js

Node.jsも必要です。私の場合はnodistでインストールしました。（インストール方法は省略します。）

```console
> node -v
v12.16.1
```

## yarn

Railsではyarnが必要とのことなので[yarn] (https://classic.yarnpkg.com/en/)よりWindows版のインストーラーをダウンロードしてインストールしました。
ダウンロードしたファイルは`yarn-1.22.0.msi`です。

```console
> yarn -v
1.22.0
```

# Rubyのインストール

[RubyInstaller for Windows] (https://rubyinstaller.org/)より、devkit付きのインストーラーをダウンロードしてインストールしました。
ダウンロードしたファイルは`rubyinstaller-devkit-2.6.5-1-x64.exe`です。

## インストール

インストーラーを実行してインストールを進めます。
![r1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/09721eb8-6c7d-5da0-71bc-c27d8cfd6d28.png)

インストール先はデフォルト(`C:\Ruby26-x64`)のままにして、3つ目のチェックボックス(`Use UTF-8 as default external encoding.`)にチェックを入れます。
![r2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/c2aa2402-73d8-871d-37f8-4efb5574f888.png)

MSYS2も必要なので`MSYS2 development toolchain 2019-10-01`にチェックを入れたままにします。
![r3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/548a2718-89fd-5e19-5b3e-1bc7f46c54e0.png)

インストールが始まるのでしばらく待ちます。
![r4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/bb4e0bfe-a40e-d641-38d2-5363d7bc9851.png)

`Run 'ridk install' to setup MSYS2 and development toolchain.`にチェックを入れたまま`Finish`ボタンをクリックします。
![r5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/c06df30e-9dc3-2316-fa7a-d27f985f3341.png)

この画面が表示されたら<kbd>ENTER</kbd>を押してインストールを進めます。
![r6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/2266028a-e640-5e0d-fda7-d18be3b35bc3.png)

MSYS2のインストールで少し手間取ったので、その時の状況を記します。

* 参考: [GNUPG: Not function setup using msys2-x86_64-20190524.exe: could not update due to not running deamons #1662] (https://github.com/msys2/MSYS2-packages/issues/1662)

このインストール作業を行っているPCではセキュリティソフト（ウィルスバスター）がインストールされているのですが、セキュリティが機能している状態だとMSYS2のインストールが正常に終わりませんでした。
下図がエラーが起きたときの画面です。
![r7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/4b11a7fa-c069-9c1f-ad3f-30b63d4d1487.png)
インストールを正常に行うには、セキュリティソフトの例外設定を行いインストール先のディレクトリ(`C:\Ruby26-x64`)を監視の対象から外します。
また、念のためインストールしたRubyをアンインストールし、且つ`C:\Ruby26-x64`ディレクトリをエクスプローラーから削除します。PCの再起動後もう一度インストールを行います。

正常にインストールが進むと下図のような画面になります。
![r9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/d9e16452-f1f9-eedd-7d03-e7bae3020856.png)

正常終了したときの状態です。もう一度<kbd>ENTER</kbd>を押して終了します。
![r10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/11d00ad8-eb55-591b-1271-d9eb9906e526.png)

## インストールしたRubyのバージョン

インストールが完了したらスタートメニューに登録されている`Start Command Prompt with Ruby`でプロンプトを立ち上げ、rubyとgemのバージョンを確認します。

```console
> ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x64-mingw32]
```

```console
> gem -v
3.0.3
```

# Railsのインストール

インストールはそれぞれgemで行います。

## bundler

bundlerはすでにインストールされていましたが、新しいバージョンが出ているのでインストールし直します。

```console
> gem list bundler

*** LOCAL GEMS ***

bundler (default: 1.17.2)

> bundler -v
Bundler version 1.17.2
```

新しいバージョンをインストールします。

```console
> gem install bundler
Fetching bundler-2.1.4.gem
Successfully installed bundler-2.1.4
Parsing documentation for bundler-2.1.4
Installing ri documentation for bundler-2.1.4
Done installing documentation for bundler after 8 seconds
1 gem installed

> bundler -v
Bundler version 2.1.4
```

## SQLite3

SQLite3が必要なのでインストールします。

```console
> gem install sqlite3
Temporarily enhancing PATH for MSYS/MINGW...
Installing required msys2 packages: mingw-w64-x86_64-sqlite3
Building native extensions. This could take a while...
Successfully installed sqlite3-1.4.2
Parsing documentation for sqlite3-1.4.2
Installing ri documentation for sqlite3-1.4.2
Done installing documentation for sqlite3 after 1 seconds
1 gem installed

> gem list sqlite3

*** LOCAL GEMS ***

sqlite3 (1.4.2)
```

SQLite3については[SQLite Home Page] (https://www.sqlite.org/index.html)よりバイナリ(.exe、.dll)をダウンロードしてパスを通す必要があるという記事を見かけましたが、私の場合は特に行わず上記のgemでインストールするだけで済みました。

## Rails

最後に2020年2月時点で最新のrailsをインストールします。

```console
> gem install rails -v 6.0.2.1

> rails -v
Rails 6.0.2.1
```

# Railsのデモアプリケーション

[Getting Started with Rails] (https://guides.rubyonrails.org/getting_started.html)を参考に、デモアプリケーションを作成し、実行まで行います。

## デモアプリケーションの作成

適当なディレクトリ上でコマンドプロンプトを開き`rails new blog`と入力して実行します。

```console
> rails new blog

// ...省略...

Done in 12.39s.
Webpacker successfully installed 🎉 🍰
```

## デモアプリケーションの作成後の状態

```console
> cd blog
```

blogディレクトリの状態です。プロジェクトの作成が失敗しているとこれらのディレクトリ・ファイルが完全に作成されません。

```text
/blog
  |
  `--- /.git
  `--- /app
  `--- /bin
  `--- /config
  `--- /db
  `--- /lib
  `--- /log
  `--- /node_modules
  `--- /public
  `--- /storage
  `--- /test
  `--- /tmp
  `--- /vendor
  `--- .browserslistrc
  `--- .gitignore
  `--- .ruby-version
  `--- babel.config.js
  `--- config.ru
  `--- Gemfile
  `--- Gemfile.lock
  `--- package.json
  `--- postcss.config.js
  `--- Rakefile
  `--- README.md
  `--- yarn.lock
```

## デモアプリケーションの実行

コマンドプロンプトから`rails server`と実行します。画面に出力されている通り`http://localhost:3000`でアプリケーションが起動しているので、ブラウザでアクセスします。
アプリケーションの停止は<kbd>Ctrl + C</kbd>を押下します。

```console
> rails server
=> Booting Puma
=> Rails 6.0.2.1 application starting in development
=> Run `rails server --help` for more startup options
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGHUP not implemented, signal based logs reopening unavailable!
Puma starting in single mode...
* Version 4.3.1 (ruby 2.6.5-p114), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://[::1]:3000
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop
```

アプリケーションが正常に起動していれば図のページが表示されます。
![r11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/9d637d78-2476-e87f-095d-5b908667048b.png)