諸事情により上記記事を消したため、本記事は再掲したものとなります。
Herokuが11月末から無料で利用できなくなるという事をお聞きしたので、上記記事を参考にwindows版でのリリースを模索した備忘録です。(macの方は上記記事でデプロイできます!)
勉強不足故、お見苦しい箇所もあるかと思いますが温かい目で読んでいただけると幸いです。
手順
1.準備
2.Fly.ioの登録、インストール
3.リリース
1.準備
1-1.powershellの準備
コマンドプロンプトでは一部Fly.ioのコマンドが使えないためPowerShell
を利用します。
開き方はキーボードで「Windowsキー」+「R」と打つと検索バーが出てくるので
「PowerShell」と打ち込んでEnterです。
1-2.アプリのコピーを取る
もしもの時のためにコピーを取っておきましょう
2.Fly.ioの登録、インストール
こちら↓がマニュアルの様です。一応貼っておきます
2-1.Fly.ioのCLIのインストール
Fly.ioのコマンドを使うためにFly.ioのCLI(コマンド使えるようにするアプリ的な物)であるflyctlが必要です。
インストール手順のマニュアルも貼っておきます。
1.PowerShellにて以下のコマンドを打ってください(階層はどこでも👌)
iwr https://fly.io/install.ps1 -useb | iex
数秒待てばダウンロードは終わります。
2.Fly.ioのアカウント作成
※githubで登録するとクレカ情報登録が求められるのでemailで普通に登録するのがおすすめです。
どうやら最近はクレカ登録をほぼ確実に求められるようです。(請求は無料の範囲の利用ならされない)
初めてFly.ioに登録する人はこちら
flyctl auth signup
Fly.ioに登録したことがある人はこちら
flyctl auth login
各々画面の指示に従って進めてください。
3.リリース
ここで取り扱うのは以下の事項です
1.gemのインストール
2.ビルド
3.デプロイ
4.マイグレーションファイルの適用
5.APIキーの登録(必要な場合のみ)
6.再デプロイ(2回目以降のデプロイ)
※ここから自分のアプリの階層で行いましょう!!
※もう一度言います。ここから自分のアプリの階層で行いましょう!!
3-1.gemのインストール
便利になるらしいgemがあるので入れておきます。
gem install fly.io-rails
2023/08/30更新
PC側が重くてリリースが出来ないという知見が散見されます。
PC本体の更新がある人は更新を、無い人も一度再起動することを推奨しておきます!
また、リリースと関係のないブラウザのタブ、アプリ等は閉じておくことを推奨します!
3-2.ビルド
ビルドするためのコマンドをPowerShellに打ち込みます
flyctl launch
Error name argument or flag must be specified when not running interactively
とエラーが出た場合、以下のコマンドを入力してください
flyctl launch --name アプリ名 --region nrt
※アプリ名は英語の小文字 (記号は×、ハイフンは大丈夫)
上記コマンドを使った場合、以下のアプリ名の設定
と地域の選択
はしなくて大丈夫です
アプリ名の設定
Creating app in /Users/ユーザ名/Desktop/アプリ名
Scanning source code
Detected a Rails app
? App Name (leave blank to use an auto-generated name):
アプリ名を入れてEnterを押してください
※英語の小文字 (記号は×、ハイフンは大丈夫)
地域の設定
Automatically selected personal organization: xxxxx@gmail.com
? Select region: [Use arrows to move, type to filter]
cdg (Paris, France)
dfw (Dallas, Texas (US))
ewr (Secaucus, NJ (US))
fra (Frankfurt, Germany)
gru (São Paulo)
hkg (Hong Kong, Hong Kong)
iad (Ashburn, Virginia (US))
lax (Los Angeles, California (US))
lhr (London, United Kingdom)
maa (Chennai (Madras), India)
mad (Madrid, Spain)
mia (Miami, Florida (US))
> nrt (Tokyo, Japan)
ord (Chicago, Illinois (US))
phx (Phoenix, Arizona (US))
居住地?を聞いてくる画面が出てきます。
大人しくnrt (Tokyo, Japan)
を選びます。
Postgresqlを使うか聞かれるので、y を入力します。
? Would you like to set up a Postgresql database now? [yN]
無料アカウントなのでSingle node, 1x shared CPU, 256MB RAM, 1GB diskを選択
デフォルトでは料金がかかるプランにカーソルが合っている場合があるのでしっかりDevelopmentプランを選択しましょう。
? 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
5/27追記
最近以下の様な質問が追加されたようです
? Scale single node pg to zero after one hour? [yN]
こちらはNを選択してください。
3-3.デプロイ
いざデプロイへ
以下のコマンドを入力してください。
flyctl deploy
無事デプロイが完了しました
==> Monitoring deployment
1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total]
--> v0 deployed successfully
3-4.マイグレーションファイルの適用
稀にActiveRecord::StatementInvalid (Could not find table 'users')
の様なエラーが発生します。
flyctl deploy
の処理内でマイグレーションファイルの適用は一応行われていますが、しばしば適用されていない場合にこの様なエラーが発生します。
以下のコマンドを打ち込んでマイグレーションファイルを適用させましょう。
flyctl ssh console -C "app/bin/rails db:migrate"
上記コマンドが上手くかない場合は以下のコマンドを順番に入力してください。
flyctl ssh consoles
bundle exec rails db:migrate
exit
3-5.APIキーの登録(必要な人のみ)
画像投稿のcloudinary
やグーグルマップのGeocoding API
など.envファイルでAPIキーを登録している人は以下記事を参考にAPIキーを登録してください。
3-6.再デプロイ
ファイルの編集を加えた後は先程と同様以下のコマンド一つで再デプロイが出来ます。(便利!)
flyctl deploy
最後に
それでは無事リリースできたアプリを見てみましょう!
以下のコマンドで開くことが出来ます。
flyctl open
おまけ デプロイ完了後のエラーetc
We're sorry but something went wrong
このエラーは開発中のコードに原因があります。
どこにエラーがあるか確認するためにはログを見るコマンドを打ちましょう!
flyctl logs
このコマンドでログを吐いてくれると思うので、しっかり読んでエラー箇所を特定しましょう!
修正したら先ほどと同じく
flyctl deploy
で更新して確認してください!
★fly.ioでseed.rbの内容を反映させたい場合★
flyctl ssh console -C "app/bin/rails db:seed"
こちらも何度か打たないとコマンドが通らない場合があります。
上記で無理な場合以下のコマンドを順番に打ちこんでみてください
flyctl ssh console
cd rails
bundle exec rails db:seed
exit
参考記事
今回も優秀な先人たちにお世話になりました。
ありがとうございました。
Fly.ioでRailsアプリをデプロイしてみた for Mac
Getting "/usr/bin/env: ruby.exe: No such file or directory" on Heroku