RubyInstallerでRuby2.1系を入れた後にRubygems証明書を入れ替えずにgemコマンドを使えるようにする

RubyInstaller で Ruby をインストールしても、そのままでは Rubygems が使えない、という記事は Qiita でもたくさん投稿されています。

- [Ruby - bundle install がこけるようになった(改訂版) - Qiita](http://qiita.com/akaneko3/items/a162def655ce791e356f)
- [Windowsでgem installするとSSLエラーが出る場合の解決策 - Qiita](http://qiita.com/shimoju/items/394818b4989b94680aaf)
- [RubyInstaller for Windowsでのgem installでSSL_connectエラーになる場合 - Qiita](http://qiita.com/fkshom/items/4206ebafbd80aa985498)
- [Ruby - 【Windows】gem updateでSSL_connect returnedエラーが起こる - Qiita](http://qiita.com/J_Sugar__/items/af0429ee61e21e0febfc)
- [node.jsとRubyで作るWindows向けフロントエンド開発環境 - Qiita](http://qiita.com/sasaplus1/items/541ea6dc39c79cda9b64)
- [2015/2月 Windows上への最新Ruby on Rails環境の構築（トラップ解除済み） - Qiita](http://qiita.com/kitfactory/items/33523d148c1740641242)


今日、 [Pryをインストールしようと思いましたがうまくいきません｜teratail](https://teratail.com/questions/7185) という記事で

> Rubyと一緒に配布されているrubygemsの証明書データ不正のようです。 
証明書をダウンロードして設定するというのが正しい対処ですが、 
http://book.scss.jp/code/c2/07.html の追記のように、一時的にhttpsをやめるという方法もあるようです。 

との記載を見ました。
たしかにこのほうが楽にいけそうだと思いました。さらに、 Rubygems の更新は `gem install rubygems-update && update_rubygems` で行えるという情報を得ました。
これならばコマンドラインだけで作業が出来るからラクだろう、と思われます。確認してみました。

# Rubygems インストーラ gem をインストール（変更記事）
## 変更のきっかけ
元記事では gem のソースを追加して削除しましたが、 @scivola さんから

>ただ，「http ソースを削除」は忘れそうでコワイです。`rubygems-update` を入れるときに

>```
gem install rubygems-update -v 2.2.3 --source http://rubygems.org
```
>とすればいいんじゃないでしょうか。

とコメントを頂いたので変更しました。

## インストール作業

```
C:\Users\riocampos>ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32]

C:\Users\riocampos>gem -v
2.2.2

C:\Users\riocampos>gem source --list
*** CURRENT SOURCES ***

https://rubygems.org/
```
Rubygems を最新版に更新するのは `gem update --system` で済むらしいのですが、残念ながら **現在の Rubygems の2.4系の Windows 版はバグがある** ため、 **2.2系を入れるべき** です。2.2系の最新版は2.2.3ですので、 `gem install rubygems-update -v 2.2.3` で入れます。その際に ` --source http://rubygems.org` で gem の http でのソースを指定します。
（とはいえ1.9.3系でのバグのようなので、2.1系インストールでは気にしなくても良いのかもしれませんが。）

```
C:\Users\riocampos>gem install rubygems-update -v 2.2.3 --source http://rubygems.org 
Fetching: rubygems-update-2.2.3.gem (100%)
Successfully installed rubygems-update-2.2.3
Parsing documentation for rubygems-update-2.2.3
Installing ri documentation for rubygems-update-2.2.3
Done installing documentation for rubygems-update after 0 seconds
WARNING:  Unable to pull data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
1 gem installed
```
エラー出てますけど、 gem 自身はインストール出来たので良しとします。
（変更ここまで）

## Rubygems インストーラ gem を実行
Rubygems は `update_rubygems` でインストールします。

```
C:\Users\riocampos>update_rubygems
RubyGems 2.2.3 installed
Parsing documentation for rubygems-2.2.3
Installing ri documentation for rubygems-2.2.3

=== 2.2.2 / 2014-02-05
　：
（長々と Change Log が出力される）
　：
```
バージョン確認します。

```
C:\Users\riocampos>gem -v
2.2.3
```
更新されています。

# gem 動作確認

pry gem をインストールしてみます。

```
C:\Users\riocampos>gem install pry
Fetching: coderay-1.1.0.gem (100%)
Successfully installed coderay-1.1.0
Fetching: slop-3.6.0.gem (100%)
Successfully installed slop-3.6.0
Fetching: method_source-0.8.2.gem (100%)
Successfully installed method_source-0.8.2
Fetching: win32console-1.3.2-x86-mingw32.gem (100%)
Successfully installed win32console-1.3.2-x86-mingw32
Fetching: pry-0.10.1-i386-mingw32.gem (100%)
Successfully installed pry-0.10.1-x86-mingw32
invalid options: -SNw2
(invalid options are ignored)
Parsing documentation for coderay-1.1.0
Installing ri documentation for coderay-1.1.0
Parsing documentation for method_source-0.8.2
Installing ri documentation for method_source-0.8.2
Parsing documentation for pry-0.10.1-x86-mingw32
Installing ri documentation for pry-0.10.1-x86-mingw32
Parsing documentation for slop-3.6.0
Installing ri documentation for slop-3.6.0
Parsing documentation for win32console-1.3.2-x86-mingw32
unable to convert "\xF1" from ASCII-8BIT to UTF-8 for extra/Console.rdoc, skipping
unable to convert "\xF1" from ASCII-8BIT to UTF-8 for extra/Console_ANSI.rdoc, skipping
Installing ri documentation for win32console-1.3.2-x86-mingw32
Done installing documentation for coderay, method_source, pry, slop, win32console after 13 seconds
5 gems installed
```
ドキュメント取得時にエラーが出てますけど、あまり気にしないw
気になるならば `--no-document` オプションを付けましょう。

```
C:\Users\riocampos>gem install pry --no-document
Fetching: coderay-1.1.0.gem (100%)
Successfully installed coderay-1.1.0
Fetching: slop-3.6.0.gem (100%)
Successfully installed slop-3.6.0
Fetching: method_source-0.8.2.gem (100%)
Successfully installed method_source-0.8.2
Fetching: win32console-1.3.2-x86-mingw32.gem (100%)
Successfully installed win32console-1.3.2-x86-mingw32
Fetching: pry-0.10.1-i386-mingw32.gem (100%)
Successfully installed pry-0.10.1-x86-mingw32
5 gems installed
```

#註記
Ruby 1.9.3/2.0系では、 [Rubygems 2.2系](https://github.com/rubygems/rubygems/issues/863)で `invalid byte sequence in UTF-8` エラーが出ます。エンコード問題のようです。

[UTF-8 環境での不具合 Cygwin - RubyGems - PIB](http://seesaawiki.jp/w/kou1okada/d/Cygwin%20-%20RubyGems)
[UTF-8 環境での不具合 Cygwin - Ruby-1.9.3p327 - win32/registry - PIB](http://seesaawiki.jp/w/kou1okada/d/Cygwin%20-%20Ruby-1.9.3p327%20-%20win32/registry#20130226-problem-on-utf8-environment)

Ruby 2.1系以降では問題ないので、2.1系を使いましょう。
もしくは、頑張って証明書を手で入れ替えましょう。



#元記事

## http ソースを追加する

[インストールや実行中にエラーが起こった場合の対処法 | Web制作者のためのSassの教科書 - 公式サポートサイト](http://book.scss.jp/code/c2/07.html)
での

> 【追記】インストールをする際にSSLエラーになる

の内容を簡単にまとめると

1. `gem source -a http://rubygems.org/` で http ソースを指定
2. 希望の gem をインストール
3. `gem source -r http://rubygems.org/` で http ソースを削除

となります。
ではやっていきましょう。

```
C:\Users\riocampos>ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32]

C:\Users\riocampos>gem -v
2.2.2

C:\Users\riocampos>gem source --list
*** CURRENT SOURCES ***

https://rubygems.org/
```
取得先を追加します。

```
C:\Users\riocampos>gem source -a http://rubygems.org/
https://rubygems.org is recommended for security over http://rubygems.org/

Do you want to add this insecure source? [yn]  
```
「安全じゃ無いソースだけど追加するの？」と訊ねてくるので、もちろん `y`。

```
http://rubygems.org/ added to sources

C:\Users\riocampos>gem source --list
*** CURRENT SOURCES ***

https://rubygems.org/
http://rubygems.org/
```
追加できました。

## Rubygems インストーラ gem をインストール
Rubygems を最新版に更新するのは `gem update --system` で済むらしいのですが、残念ながら **現在の Rubygems の2.4系の Windows 版はバグがある** ため、 **2.2系を入れるべき** です。2.2系の最新版は2.2.3ですので、 `gem install rubygems-update -v 2.2.3` で入れます。

```
C:\Users\riocampos>gem install rubygems-update -v 2.2.3
Fetching: rubygems-update-2.2.3.gem (100%)
Successfully installed rubygems-update-2.2.3
Parsing documentation for rubygems-update-2.2.3
Installing ri documentation for rubygems-update-2.2.3
Done installing documentation for rubygems-update after 3 seconds
WARNING:  Unable to pull data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
1 gem installed
```
エラー出てますけど、 gem 自身はインストール出来たので良しとします。

## Rubygems インストーラ gem を実行
Rubygems は `update_rubygems` でインストールします。

```
C:\Users\riocampos>update_rubygems
RubyGems 2.2.3 installed
Parsing documentation for rubygems-2.2.3
Installing ri documentation for rubygems-2.2.3

=== 2.2.2 / 2014-02-05
　：
（長々と Change Log が出力される）
　：
```
バージョン確認します。

```
C:\Users\riocampos>gem -v
2.2.3
```
更新されています。

## http ソースを削除

```
C:\Users\riocampos>gem source -r http://rubygems.org/
http://rubygems.org/ removed from sources

C:\Users\riocampos>gem source --list
*** CURRENT SOURCES ***

https://rubygems.org/
```
https での取得先のみになりました。