Visual Studio Codespaces で Ruby on Rails

最近 Rails を始めた VSCoder ですが、以下の問題点がありました。
※VSCoder: Visual Studio Code 愛用者

- **環境構築が面倒**

そのため、AWS の Cloud9 を利用していたのですが、今度は以下の問題が

- **ブラウザ上のエディタは使いづらく違和感がある**
- **VSCode が使いたい**

そこで今ホットな **Visual Studio Codespaces** に手を出してみて、人生変わりました。

# Visual Studio Codespaces とは？
一言で言うと、**クラウド上の開発環境**です。
[公式サイト](https://visualstudio.microsoft.com/ja/services/visual-studio-codespaces/)から引用すると、以下の特徴が挙げられます。

- **Git リポジトリ、拡張機能、および組み込みのコマンドライン インターフェイスを備えたブラウザーベースのエディターである**
- **どのデバイスからでもアプリケーションを編集、実行、デバッグできる**

また、私にとって最大の特徴は、

- **デスクトップアプリの VSCode でも開発できる**

ということです。もちろん拡張機能も追加できます。

# Codespace を作成する

1. [Azure のアカウントを作成](https://azure.microsoft.com/ja-jp/free/search/?&ef_id=Cj0KCQjwzZj2BRDVARIsABs3l9IMr4llG0Jxw53BUj3ngy-OwIMUAJgZHxDpW8TkbLUGQ4bm3ZuebD8aAsLoEALw_wcB:G:s&OCID=AID2000091_SEM_Cj0KCQjwzZj2BRDVARIsABs3l9IMr4llG0Jxw53BUj3ngy-OwIMUAJgZHxDpW8TkbLUGQ4bm3ZuebD8aAsLoEALw_wcB:G:s&dclid=CjkKEQjwzZj2BRCKt63v_ar76r4BEiQACDUd5IvbbMP4-En8oyxn2NpgN2wOT5HpaBrPp0hvh4B4YRHw_wcB)します。
2. [Visual Studio Codespaces のサイト](https://online.visualstudio.com/login)から、Azure アカウントで Sign in します。
3. Create Codespace で作成します。Codespace Name だけ指定すれば、あとはデフォルトで十分だと思います。既存のリポジトリがあれば、Git Repository で指定すると自動的に Clone してくれます。(Rails + Space で Railspace という名前にしてみました)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/da77d413-66d9-638f-08a3-7d45b104f89b.png)

ブラウザ上に VSCode が出ます！！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/828dba4e-62d0-43fd-7679-b43c55f14e6c.png)

ターミナルも使えます。vsonline というユーザで workspace が作られています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/dcdea3cc-9fe2-b2c9-48e5-1d046d562544.png)

Python はデフォルトでいろいろ入っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/410d5cd7-4f29-18e7-0c8e-6f9c524ec322.png)

# デスクトップアプリの VSCode で開く
1. [Visual Studio Code](https://code.visualstudio.com/) のインストール
2. ウィンドウ左側のツールバーの Extensions で Visual Studio Codespaces をインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/e1d82384-4c97-9274-8ac2-ffd3fa39619b.png)
3. Remote Explorer のアイコンができるのでそこから先ほど作成したのと同じアカウントに Sign in します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/61463229-8b9d-02cf-94bd-388ce74b91d1.png)
4. 先ほど作成した Railspace という Codespace が出てくるので、コンセントのマークをクリックして connect します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/93376ff1-7fb0-feba-3e25-6b9a21a5a7d3.png)

これでいつもの VScode です！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/8f411f30-68f6-5cdf-734f-07db83d3cbb8.png)

# Ruby on Rails の環境構築
Cloud9 はデフォルトで Ruby や Rails の環境がありますが、Visual Studio Codespaces では残念ながらありません...。まあどうせ、 Cloud9 でもバージョン変えたりするので。
以下はすべて、Codespace に接続した デスクトップアプリの VSCode のターミナルで行います。
Codespaces は Linux 環境を使用しているので、基本的には普通の Linux への環境構築と同じです。

### rbenv のインストール
[Ruby 公式サイト](https://www.ruby-lang.org/ja/documentation/installation/)でもおすすめしている[こちら](https://github.com/rbenv/rbenv)の README を参考にインストールしていきます。rbenv によって Ruby の複数のバージョンを管理できます。

まずはリポジトリをクローンしてパスに追加し、セットアップします。

```
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'export PATH="$HOME/.rbenv/shims:$PATH"' >> ~/.bashrc
$ ~/.rbenv/bin/rbenv init
```

その後、ターミナルを再起動する必要があるので、 + ボタンで**新しいターミナルを開いてください**。
以下のコマンドを入力して確認できますが、rbenv install が not found になっています。

```
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/22b65c3e-ee9f-7192-c57e-37f695061b7e.png)

指示されたリンクの通り、以下で解決します。

```
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
```

もう一度確認すると、今度はうまくいっているはずです。

```
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/ce2570b7-f8c1-6dee-d68f-214c4698f43a.png)

これで rbenv は完了です。私はここが山場でした。

### Ruby と Rails のインストール
主要な Ruby のバージョンを確認できます。すべて見たい場合は、`$ rbenv install --list-all` で可能です。

```
$ rbenv install --list
```

あとは `$ rbenv install [バージョンナンバー]` で好きなバージョンをインストールできます。

```
$ rbenv install 2.7.1
```

インストール後、以下のコマンドでどのバージョンの Ruby を使うか指定します。

```
$ rbenv global 2.7.1
```

無事に Ruby がインストールできました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/48fb8db9-dfad-01d5-6a34-dc19aca446a3.png)

続いて、Rails をインストールします。

```
$ gem install rails
```

Rails をインストールできました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/92efb7b6-3f8e-0c20-8406-38928a31af81.png)

# アプリの作成とローカルホストへのアクセス
あとはまるでローカル環境であるかのように開発ができます。
**ローカルホストも使えます**。

```
$ rails new SampleApp
```

で Rails アプリを作成後、

```
$ rails s
```

でサーバを立ち上げます。

以下の画像のように、 `Remote Explorer > Forward Port...` をクリックし、`3000`と入力して Enter を押し、localhost:3000 に繋げます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/94d6ba5a-b9e1-1872-af08-5099c48ef471.png)

ブラウザで `http://localhost:3000/` にアクセスすると...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390958/01bc170d-b1f0-3900-32d2-3bc8da27fe84.png)

以上です。
Rails に関しては始めて2カ月なので至らない点があるかもしれないです。
修正やコメントお待ちしてます。