Fly.ioでリリースする（for Windows）

Herokuが有料化するにあたって、Fly.ioでリリースする方向にシフトチェンジしましたが、参考にする記事が多く、一つにまとめたいと思い本記事を作成しました。
初めて記事を書くのでご指摘、アドバイス等ございましたらお願いします。

# 流れ
1. Fly.ioのインストール
1. deploy前の準備
1. いざdeploy

# 1.Fly.ioのインストール
リリース作業をする前にローカル環境で、自分の作ったプロダクトにエラーが存在しないことを確認してください。
ありとあらゆるボタンを押して確認してみてください。
また、もしもの時のためにzipファイルをとっておくことをおすすめします。

###### 1-1. PowerShellを開く
windows+Rを押してPowerShellを開いてください。![ファイル名を指定して実行 2022_11_30 10_46_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978160/03c2eb86-c25b-0171-b776-ee9b14831540.png)
###### 1-2.インストール
PowerShellが開けたら、階層はどこでもいいので以下のコマンドを打ちましょう。
```ruby:PowerShell
iwr https://fly.io/install.ps1 -useb | iex
```
###### 1-3.アカウント作成
初めてFly.ioを使用する場合は
```ruby:PowerShell
flyctl auth signup
```
![スクリーンショット (129).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978160/401af1ad-3e24-105a-8904-615f7dbad08c.png)
そうするとこのような画面が出てくるので、入力して登録を進めてください。（私はGithubと連携せずに作成しました）

![スクリーンショット (128).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978160/8c9b1d7c-30cc-6ac4-c555-a0838fbc8f53.png)
その後クレジットカードを登録する画面が出てくるので登録してください。
現状、クレカを使わない方法が見つからないので登録しないとできなさそうです。（バンドルカードで登録しようと試みましたがダメでした）
![スクリーンショット (130).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978160/c3d58289-32ec-cfa7-8d64-94ae32bde490.png)
このような画面が出てきたら登録したメールアドレスにメールが届いているはずなので、
verify email　
を押して登録を完了してください。

既に登録済みの方は
```ruby:PowerShell
flyctl auth login
```
を打って指示通りに進んでください。

# 2.deploy前の準備
:::note warn
ここからはいつも自分が開発をしている階層で作業をしてください！
:::
###### 2-1.gemのインストール
```ruby:PowerShell
gem install fly.io-rails
```
###### 2-2.ビルド
ビルドするためのコマンドを入力してください。
```ruby:PowerShell
flyctl launch --name アプリ名 --region nrt
```
ここのアプリ名は自分の好きな名前を付けてください。(小文字じゃないとエラーが出ます)
するとPostgresqlデータベースを設定するか聞かれるのでyを押してください。
```ruby:PowerShell
? Would you like to set up a Postgresql database now? [yN]
```
無料で利用したいので、一番上の Single node　を選択してください。
※人によってはこの画面が出てこないこともあります。
```ruby:PowerShell
? Select configuration:  [Use arrows to move, type to filter]
> Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk
  Production - Highly available, 1x shared CPU, 256MB RAM, 10GB disk
  Production - Highly available, 1x Dedicated CPU, 2GB RAM, 50GB disk
  Production - Highly available, 2x Dedicated CPU's, 4GB RAM, 100GB disk
  Specify custom configuration
```
###### 2-3.seeds.rbを使えるようにする(seedを使用しない人はエラーが出るかもです)
```ruby:PowerShell
flyctl ssh console -C “app/bin/rails db:seed”
```
###### 2-4.volume作成
```ruby:PowerShell
flyctl volumes create ボリューム名 --region nrt
```
ボリューム名はアプリ名と同じで問題ないです。
###### 2-5.シークレットを設定
```ruby:PowerShell
flyctl secrets set DATABASE_URL=sqlite3:///mnt/name/production.sqlite
```
ここのnameも自分のアプリ名に変更してください。
###### 2-6.VSCodeをいじる
①VSCodeのfly.tomlフォルダに以下を追加してください。
```ruby:fly.toml
[mounts]
  source="name"
  destination="/mnt/name"
```
nameが二箇所あるので二箇所とも変更してください。

②fly.rakeフォルダに変更を加えます。
```ruby:lib/tasks/fly.rake
# RELEASE step:
   #  - changes to the filesystem made here are DISCARDED
   #  - full access to secrets, databases
   #  - failures here prevent deployment
-  task :release => 'db:migrate'
+  task :release　　#　=> 'db:migrate'の部分を削除してください

# SERVER step:
   #  - changes to the filesystem made here are deployed
   #  - full access to secrets, databases
   #  - failures here result in VM being stated, shutdown, and rolled back
   #    to last successful deploy (if any).
-  task :server do
+  task :server => 'db:migrate' do　　#　severとdoの間に => 'db:migrate' を追加してください
     sh 'bin/rails server'
   end
```
# 3.いざdepoly
お疲れさまでした。いよいよdeployです。PowerShellに以下を入力してください。
```ruby:PowerShell
flyctl deploy
```
```ruby:PowerShell
==> Monitoring deployment

 1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total]
--> v0 deployed successfully
```
このような画面になればdeploy完了です！

```ruby:PowerShell
flyctl open
```
このコマンドを打って実際にリリースしたプロダクトが正常に機能しているか確認してみましょう。

# 再デプロイしたい場合
再デプロイは非常に簡単で
```ruby:PowerShell
flyctl deploy
```
このコマンドをもう一度打てば再デプロイできます。
# 参考にした記事
今回参考にさせていただいた記事です。

https://qiita.com/00000000/items/237ee0fba66ca5a3f12e

https://qiita.com/00000000/items/237ee0fba66ca5a3f12e