Windows10でRuby on Railsの環境構築

# 目的
Windows10にてRuby on Railsの環境を構築する。
他の方のqiitaの記事等を参考にしているが、どのにも載っていなかったエラーの対策方法もあったため一応記事にした。

# 環境

```
Windows10 64bitマシン 
```

# 構築
**1.rubyインストール**
ダウンロードは[こちら](https://rubyinstaller.org/downloads/)からRubyInstallerをダウンロードしてきて行う。rubyのversionは2.4系を使用する。
2019年2月5日現在だと、画像のRuby+Devlit 2.4.5-1 (x64)をダウンロードしてくる。
<img width="356" alt="ruby_install.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/276828/56eb048f-7e13-ef1f-7a73-5dd94e619b7f.png">
仮に、2.5系だとsqliteに対応しておらず、後々めんどくさい。

ダウンロード後、RubyInstallerを実行する。あとはライセンスに同意してクリック及びエンターしていくだけである。途中でコマンドプロンプトが立ち上がり2点ほど選択を要求されるが、どちらも気にせずエンターを押せばよい。

コマンドプロンプトが閉じればrubyのインストールは完了である。インストール後下記のように確認する。versionが表示されればOKである。一応合わせてRubygemsのversionも確認しておくとよい。

```cli:コマンドプロンプト
C:\path>ruby -v
ruby 2.4.5p335 (2018-10-18 revision 65137) [x64-mingw32]

C:\path>gem -v
2.6.14.3
```

**2.bundlerインストール**
bundlerが何なのかは各々調べてほしい。
bundlerのインストールと確認の方法は以下である。

``` cli:コマンドプロンプト
C:/path>gem install bundler
Fetching: bundler-2.0.1.gem (100%)
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Installing ri documentation for bundler-2.0.1
Done installing documentation for bundler after 5 seconds
1 gem installed

C:\path>bundler -v
Bundler version 2.0.1
```

**3.sqlite3のダウンロード**
この環境構築ではsqlite3を使用する。Railsがデータベースを利用し、デフォルトで使用するデータベースがsqlite3だからである。
sqlite3は[こちら](https://www.sqlite.org/download.html)からダウンロードする。
Railsからsqlite3を利用するにはsqlite3.dllとsqlite3.exeが必要である。
下記画像だと、sqlite-dll-win64-x64-3260000.zipに.dll,sqlite-tools-win32-x86-3260000.zipに.exeファイルが入っているので、各々をダウンロード及び解凍し、中身をすべて環境PATHが通っているとこに置く。(今回はruby.exeの入っているディレクトリ)
<img width="908" alt="sqlite.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/276828/036ce4d5-8ff5-3b67-70bf-f9295c9fa5e9.png">

環境PATHの通っているところに置くと下記のようにsqlite3コマンドが使えるようになる。

```cli:コマンドプロンプト
C:\path>sqlite3 --version
3.26.0 2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9
```

**4.Rails導入・実行**
次にRailsを導入していく。Railsは下記コマンドでインストールでき、railsコマンドが使用できるようになる。

```cli:コマンドプロンプト
C:\path>gem install rails
(省略)
gem install rails

C:\path>rails -v
Rails 5.2.2
```

Railsのインストール後任意の場所にRailsプロジェクト用のディレクトリーを作り、railsコマンドでwebアプリケーションを作っていく。そのやり方はおそらく下記のように書かれていることが多い。

```cli:コマンドプロンプト
C:/path>mkdir sample
C:/path>cd sample
C:/path/sample>rails new TestApp
```

2019年2月5日現在、上記のやり方だとエラーが出る。
原因はrails newコマンド。このコマンドはアプリケーションを作るコマンドであるが、実行されるbundle installコマンドにて、sqlite3を使用するgemのinstallが行われる。そのgemのversionが1.4.0であり、1.4.0は2019年2月4日に追加されたばかりであったためか、gem installコマンドを利用すると下記のようなエラーを吐く。

```cli:コマンドプロンプト
C:\path>gem install sqlite3
Fetching: sqlite3-1.4.0.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Installing required msys2 packages: mingw-w64-x86_64-sqlite3
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
        ERROR: Failed to build gem native extension.

    current directory: C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sqlite3-1.4.0/ext/sqlite3
C:/Ruby24-x64/bin/ruby.exe -r ./siteconf20190205-8936-17igga1.rb extconf.rb
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for -ldl... no
checking for dlopen()... no
missing function dlopen
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
--- 以下略 ---
```

その為、一時的な対策としてrails newコマンドを--skip-bundleオプションをつけて実行する。そうするとbundle installを行わず各種ファイルの準備でコマンドが終了し、アプリケーションのディレクトリができる。
その中にあるGemfileを編集し、sqlite3の部分を以下のように編集する.

```bundler:Gemfile
gem 'sqlite3'
↓
gem 'sqlite3', '1.3.13'
```

これによってエラーが出なくなるため、bundle installコマンドをアプリケーションのディレクトリで実行する。

**5.serverの実行**
Railsの導入後、アプリケーションのディレクトリでrails serverコマンドを実行する。
rubyのインストールのセクションで書いた2.5系のsqliteの問題が出るのはここ。

ブラウザでhttp://127.0.0.1:3000にアクセスし、Yay! You’re on Rails!のページが出たら終わり。

# おわりに
一応、これでRuby on Railsの環境構築は終わり。あとはちゃんとしたコンテンツ作っていければなぁと思う。あと、2.5系じゃ使えない(一応解決策っぽい記事は見つけたけど、僕の技術だと解決できなかった)のでそこをなんとか解決できるようになれたらと思う。