Ruby AtCoder向けVSCode設定

# はじめに
普段は、***Perl*** で *[AtCoder](https://atcoder.jp/home)* を楽しんでいます。
しかし、いつ何時 *Perl* がロックダウンされるかもしれませんのでそれに備え、***Ruby*** の環境を整えたいと思います。

# Ruby to Perl
*Ruby* のロックダウンを心配されている方は、
*[Perl Git による入園式](https://qiita.com/superrino130/items/cc2ca6c6afc2b41330e6)*
*[PerlのAtCoder向けVSCode設定(tasks.json)](https://qiita.com/superrino130/items/7025bc0f0ac7966ba193)*
にて、簡単に環境構築できます。
# 構築順
**VSCode インストール**
*[Visual Studio Code (Windows版) のインストール](https://qiita.com/psychoroid/items/7d85ae6bade4a67aedb1)* 

**msys2 インストール**
*[msys2をWindowsにインストールしてPerlを使う](https://tutorial.perlzemi.com/blog/20180806153350.html)*

**Ruby インストール**
上記、msys2 インストール後に、pacman で Ruby をインストールします。

```
>pacman -Syu mingw-w64-x86_64-ruby-native-package-installer
```
msys/mingw32/mingw64 の3種類があると思われますが、Windowsが64bitの場合、mingw64 を選択します。

**VSCode tasks.json 設定**

|Ctrl + Shift +B|
|:-----:|

で、Ruby を実行できるように　tasks.json を設定します

```設定例tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "ruby",
            "type": "shell",
            "command": "C:\\msys64\\mingw64\\bin\\ruby.exe",
            "args": [
                "${workspaceFolder}\\main.rb"
            ],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "shared",
                "showReuseMessage": false,
                "clear": true
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
```
"command": "C:\\msys64\\mingw64\\bin\\ruby.exe"、ruby.exe のパスを設定します。

これで Ruby が実行可能になり AtCoder や *[もっとプログラム脳を鍛える数学パズル](https://www.shoeisha.co.jp/book/detail/9784798153612)* を楽しむことができます。
# デバッグの構築
上記構成で、VSCode から Ruby が実行可能になりますが、動作確認でデバッグも実行可能になるよう構築を続けます。

**gcc インストール**
pacman で gcc をインストールします。
これを入れないと、後程の gem インストールに失敗します。

```
>pacman -Syu mingw-w64-x86_64-gcc
```
**bundler のインストール**

```
>gem install bundler
```
windows版の gem は Windows コマンドスクリプトです

**Gemfile の編集**

```
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"
gem "ruby-debug-ide"
gem "debase"
```
ruby-debug-ide と debase を追記します

**bundle install の実行**

```
>bundle install
```

**launch.json の設定**

```設定例launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Local File",
            "type": "Ruby",
            "request": "launch",
            "program": "${workspaceRoot}/main.rb",
            "stopOnEntry": true
        }
    ]
}
```
これで **F5** を押下するとデバッグ実行します.
<img width="678" alt="vscoderuby.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/6a2183b2-9712-bfc4-75a8-ddb6b9ab4d99.png">
# 課題
デバッグ実行時に、標準入力の受け取りができない状態です。
出来次第、追記します。
# まとめ
+ Windows10 の VSCode の Ruby でデバッグができるようになった
+ これで Perl がロックダウンされても安心
+ 後半走りすぎ
+ RubyInstaller を使用していないけど、まあいいや

## 追記
`GitHub`がやりたくてターミナルを`bash.exe`にする設定と、`tasks.json`のみ`cmd.exe`を使用する設定は、*[こちら](https://qiita.com/yumetodo/items/42132a1e8435504448aa#%E8%BF%BD%E8%A8%98-%E3%83%93%E3%83%AB%E3%83%89%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E4%BD%BF%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AE%E6%B3%A8%E6%84%8F)*を参照


参照したサイト
*[VSCodeでRubyを気軽に実行する環境を作る。](https://qiita.com/masakinihirota/items/ec90086bab86f369fa15)*
*[Visual Studio Codeで「プロを目指す人のためのRuby入門」の例題を動かしてみた（動画付き）](https://qiita.com/jnchito/items/acc7b4b0a31330982bb0)*
*[VSCodeでRubyコードのデバッグができる環境を構築する（２０１７年２月現在）](https://t-tutiya.hatenablog.com/entry/20170204/1486204880)*
*[PerlのAtCoder向けVSCode設定(tasks.json)](https://qiita.com/superrino130/items/7025bc0f0ac7966ba193)*
*[Visual Studio Code 15.1の統合シェルをMSYS2のbashにする](https://qiita.com/yumetodo/items/42132a1e8435504448aa)*