gigalixirコマンドのアップグレード

[fukuoka.ex](https://fukuokaex.connpass.com/)のpiacereです
ご覧いただいて、ありがとうございます:bow:

[「gigalixirコマンド」](https://qiita.com/piacere_ex/items/511f24888c7350639d0b)が、バージョン古くなったときの対処法についてまとめます

なお、[「Phoenix」](https://qiita.com/piacerex/items/b7787580fce5f148242f#phoenix%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)は、ElixirのWebフレームワークで、[「Gigalixir」](https://qiita.com/piacerex/items/1a9cbcc740ca3707eaec)は、Herokuに似たPhoenixが動くクラウド（PaaS）です

内容が、面白かったり、役に立ったら、「いいね」よろしくお願いします :wink:

# 本コラムの検証環境、事前構築のコマンド

本コラムは、以下環境で検証しています（Windowsで実施していますが、Linuxやmacでも動作する想定です）

- Windows 10
- Elixir 1.8.1 　　　　 ※<b>[最新版のインストール手順はコチラ](https://qiita.com/piacere_ex/items/6714e1440e3f25fb46a1#%E4%BA%8B%E5%89%8D%E6%BA%96%E5%82%99elixir%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)</b>

# gigalixirコマンドのバージョン確認

以下コマンドで、インストール済みのgigalixirコマンドのバージョンと、最新版を比較できます

```
pip search gigalixir
```

前回コラムをまとめたときから、今回コラムまでに、バージョンが上がっていました

```
gigalixir (1.0.19)  -
  INSTALLED: 1.0.9
  LATEST:    1.0.19
```

# インストール済みgigalixirコマンドをバックアップする

Windowsで動かすための修正などが、インストール済みgigalixirコマンドには入っているため、バックアップを取っておきます

まず、gigalixirコマンドがインストールされたpipライブラリフォルダを、以下コマンドで特定します

```
pip show gigalixir
```

「Location」が、gigalixirコマンドのインストールされたフォルダです

```
Name: gigalixir
Version: 1.0.9
Summary: UNKNOWN
Home-page: https://github.com/gigalixir/gigalixir-cli
Author: Jesse Shieh
Author-email: jesse@gigalixir.com
License: UNKNOWN
Location: xxxxxxxx/lib/site-packages
Requires: click, requests, stripe, rollbar, pygments
Required-by:
```

バックアップを取ります

```
cd xxxxxxxx/lib/site-packages
copy gigalixir gigalixir_backup
```

ちなみにLinux／macのときは、以下になります

```
cd xxxxxxxx/lib/site-packages
cp -a gigalixir gigalixir_backup
```

# gigalixirコマンドをアップグレードする

gigalixirコマンドのアップグレードは、インストール時のコマンドと同じです

```
pip install gigalixir --ignore-installed six
```

バージョンが上がったことが確認できました

```
pip search gigalixir

gigalixir (1.0.19)  -
  INSTALLED: 1.0.19 (latest)
```

## <strike>【Windowsのみ】gigalixirコマンドをWindowsで利用可能にする</strike>

### <font color="red">※【2020/2/5確認】gigalixirコマンドが、Windowsでも標準対応になり、本項は実施不要となりました</font>

バージョンアップをするたびに、初回インストール時同様、Windows対応が必要です

まず、gigalixirコマンドがインストールされたpipライブラリフォルダを、以下コマンドで特定します

```
pip show gigalixir
```

「Location」が、gigalixirコマンドのインストールされたフォルダです

```
Name: gigalixir
Version: 1.0.9
Summary: UNKNOWN
Home-page: https://github.com/gigalixir/gigalixir-cli
Author: Jesse Shieh
Author-email: jesse@gigalixir.com
License: UNKNOWN
Location: xxxxxxxx/lib/site-packages
Requires: click, requests, stripe, rollbar, pygments
Required-by:
```

このフォルダ配下にある、「``__init__.py``」の以下変更が必要です（以前のバージョンと行番号が異なっていました）

```python:【pipライブラリフォルダ】/site-packages/gigalixir/__init__.py　※変更前
224:    PLATFORM = call("uname -s").lower() # linux or darwin
225:    if PLATFORM == "linux":
226:        ctx.obj['router'] = LinuxRouter()
227:        ctx.obj['opener'] = LinuxOpener()
228:    elif PLATFORM == "darwin":
229:        ctx.obj['router'] = DarwinRouter()
230:        ctx.obj['opener'] = DarwinOpener()
231:    else:
232:        raise Exception("Unknown platform: %s" % PLATFORM)
```

else配下をLinuxと同じ処理をコピーします

```python:【pipライブラリフォルダ】/site-packages/gigalixir/__init__.py　※変更後
224:    PLATFORM = call("uname -s").lower() # linux or darwin
225:    if PLATFORM == "linux":
226:        ctx.obj['router'] = LinuxRouter()
227:        ctx.obj['opener'] = LinuxOpener()
228:    elif PLATFORM == "darwin":
229:        ctx.obj['router'] = DarwinRouter()
230:        ctx.obj['opener'] = DarwinOpener()
231:    else:
232:        ctx.obj['router'] = LinuxRouter()
233:        ctx.obj['opener'] = LinuxOpener()
```

# gigalixirコマンドの動作確認

gigalixirコマンドで、まずバージョン確認します

```
gigalixir version
```

次に、Gigalixirにアカウント登録した際のメールアドレス／パスワードでログインしてみます

```
gigalixir login

Email:    【メールアドレス】
Password: 【パスワード】
Would you like us to save your api key to your ~/.netrc file? [Y/n]: Y
Logged in as 【メールアドレス】
```

うまくログインできたようなので、Gigalixir appsも確認します

```
gigalixir apps

[
  {
    "cloud": "gcp",
    "region": "us-central1",
    "replicas": 1,
    "size": 0.2,
    "stack": "gigalixir-14",
    "unique_name": "xxxxxxxxxxxxxxxxxxxxxx"
  }
]
```

うまく動きました

# p.s.「いいね」よろしくお願いします

ページ左上の ![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/4d515047-cc48-382e-c2b1-3ad0cc50dbbf.png) や ![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/a4e3da58-70a3-4197-95a2-6a6906650d01.png) のクリックを、どうぞよろしくお願いします:bow:
ここの数字が増えると、書き手としては「ウケている」という感覚が得られ、連載を更に進化させていくモチベーションになりますので、もっとElixirネタを見たいというあなた、私達と一緒に盛り上げてください！:tada: