【これからプログラミング&クラウドを始める人向け】AWS Cloud9 を利用して Ruby の開発環境を作ってみる③ - Ruby のバージョン管理

# はじめに
この記事は無料で AWS Cloud9 を利用してプログラム学習を開始する方法いついて入門者向けに記載した内容になっています。

AWS アカウントの作り方は → [こちら](https://qiita.com/KCbogard/items/3cd4605f54c27377da38)
AWS Cloud9 の開始方法は → [こちら](https://qiita.com/KCbogard/items/d6b18119e6268081248e)

## 今回行うこと
複数の案件や学習教材を利用した場合、それぞれ Ruby のバージョンが異なる場合があります。
今回は複数の Ruby のバージョンをインストールして状況に応じてバージョン変更する方法を Cloud9 上で実践してみます。

# Ruby のバージョン確認
- 右下の□ボタンを押すとコマンドコンソールが全画面表示になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/4c8e8adf-409f-65fc-19f4-5fb79ec691ab.png)

- AWS Cloud9 上で現在インストールされている Ruby のバージョンを確認してみます。

``` 打ち込むコマンド
ruby -v
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/bdb5f49f-fdc9-dac2-4768-dcf3f9525fdb.png)

## バージョン管理ソフトウェアの導入
- 今回は「 rvm (Ruby Version Manager) 」を利用する手順になります。
- 先程と同様にまずは Cloud 9 上の rvm のバージョンを確認します。

```　
rvm -v
```

- 上記のコマンドを入力すると rvm のバージョンが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/9a6b6f41-f1af-2648-db4c-7ad212320057.png)


- 次に rvm のヘルプ表示を行います。
 
```　
rvm help
```
※ rvm とだけ入力してもヘルプは表示されます。

- 入力するとコマンドとその説明が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/f78f4f1d-7c28-831c-38a2-aa6a5fdcf32a.png)

- 次にこの環境に表示されている ruby のバージョンを表示してみます。

```　
rvm list
```

- 現在この環境で利用されているバージョンは 2.6.3 であると表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/b41b9f31-bcd7-e3f3-cf01-3ab371a1d63e.png)

- 次にインストール可能なバージョンを確認します。

```　
rvm list known
```

- 実行可能な Ruby のバージョンがずらっと出てきます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/d20f5276-aa77-0f64-35fe-bb032a684e57.png)

このように実際に環境を構築する際にはヘルプを開き、バージョンを確認しながら進めることになります。

# Cloud9上に Ruby 別バージョンのインストール

## 鍵のインストール
- RVMの公式サイトから以下画像の枠部分のコマンドをコピーします。
    - URL : https://rvm.io/rvm/security

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/aeadca58-7a21-51b8-8eb3-0e63b6523256.png)

- コマンドをターミナル上で実行します。root 権限での実行が必要なため sudo 権限で実行します。

```　
sudo gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
```

- 実行後の画面はこのようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/247d91f1-7f9e-a4d5-744d-0dd68a93db72.png)

## バージョンを指定してインストールする

- 今回は敢えて 2.3.2 をインストールしてみます。
    - 数分ほど完了までに時間がかかります。

```　
rvm install 2.3.2
```
- 完了後の画面はこんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/617bdd8e-867d-07db-bf54-fc7ff2ea00b6.png)

- ここで改めてインストールされているバージョンを確認します。

```　
rvm list
```

- 以下のキャプチャのように言語の使用状況は言語表示の手前の記号で判断ができます。
    - => 現在使用中のバージョン
    - =* 現在使用中かつデフォルト設定バージョン
    -  * デフォルト設定されているバージョン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/e3468cab-4db1-8404-1aa1-af7f8c08dfb3.png)

- 現在はインストールした 2.3.2 が使用中の設定になっています。

## 使用するバージョンの変更
- 以下のコマンドで使用するバージョンを変更することができます。

```　
rvm use 2.6.2(対象バージョン)
```

- 実行結果と確認結果は以下のようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/bf1273f0-53c6-c9cc-725f-5c8d3182156f.png)

- 
## デフォルト設定のバージョンの変更
- デフォルトのバージョンは --default を追加したコマンドで変更ができます。

```　
rvm --default use 2.3.2(対象バージョン)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/eb718677-6687-0cd4-51d7-b343d42cc904.png)

## インストールした特定バージョンの削除

- 以下のコマンドで削除することができます。

```　
rvmsudo rvm remove 2.3.2
```

- 実行結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/98513ecf-a446-bca9-6f2a-1f0e767b1e80.png)

# まとめ
上記のようにバージョン管理のソフトウェアを活用して、複数バージョンの管理を行うことが可能です。行う内容自体は他の言語でも同様のことを進めていくことになります。次回は Git 環境を AWS のサービスを利用して用意していく記事を書こうと思います。お楽しみに！

## 関連記事
- [【これからプログラミング&クラウドを始める人向け】AWS Cloud9 を利用して Ruby の開発環境を作ってみる① - AWSアカウント準備編](https://qiita.com/KCbogard/items/3cd4605f54c27377da38)
- [【これからプログラミング&クラウドを始める人向け】AWS Cloud9 を利用して Ruby の開発環境を作ってみる② - AWS Cloud9 の環境構築](https://qiita.com/KCbogard/items/d6b18119e6268081248e#_reference-17165b1901e6a1c592ba)