こんにちはー。
以前作ったRails製のWebアプリケーションをサーバに置いて動かしてみた話です。
結論からいうと、今回はHerokuというサービスを使って稼働させてみました。
理由云々なんかはそれなりにあったりもしますが、それはまた別の機会に書くとしまして、やったことを簡単に振り返ってみたいと思います。
Herokuとは?
サーバ構築やメンテナンス不要で、作ったアプリケーションを置くだけで済んじゃう便利サービスです。キャンプで例えるならば、テントも食糧もあらかじめ用意してあるグランピングみたいなもんですね。ちなみにキャンプまともにしたことありません。
今回は無料で作れるFreeというので試しています。
というか、何もせずとも最初はFreeが選ばれるようです。いきなりお金取られるわけじゃないので安心ですね。
追記:2022年11月28日で無料プランが廃止されるとのことです。これから登録される方、すでに登録済みの方はご注意を。
どうやって作る?
実際の工程はこんな感じです。Railsアプリケーションはすでに作っていて、GitHubにソースコードをコミットしているのでHerokuにどうこうする作業だけに絞っています。
Herokuアカウントを作る。
公式サイトからアカウントを新規登録します。
Heroku スターターガイドに沿って作業をすすめる。
Herokuサイト内にスタータガイドというのがあります。前に作ったRailsアプリがバージョン7系なので、こちらを参考にしました。
基本的に手順どおり進めればうまくいくのですが、自分のPC環境によるものでうまくいかなかったり、アプリケーションの設定をHeroku用に少しだけいじったりする必要があるので、簡単にまとめておきました。同じくハマった人いたら参考になれば幸いです。
作業を行なったPC情報は以下の通りです。
MacBook Pro 2020 %sw_vers ProductName: macOS ProductVersion: 12.5 BuildVersion: 21G72 %ruby -v ruby 3.0.0rc1 (2020-12-20 master 8680ae9cbd) [x86_64-darwin20]
Heroku CLIのインストールでつまづく
手順の最初の方で、HerokuCLIをインストールするのですが、
% brew tap heroku/brew && brew install heroku
を実行したら、こんなエラーがでたので
Error: Your Command Line Tools are too outdated. Update them from Software Update in System Preferences or run: softwareupdate --all --install --force If that doesn't show you any updates, run: sudo rm -rf /Library/Developer/CommandLineTools sudo xcode-select --install
% softwareupdate --all --install --force
をしても最新版で何も更新されず。エラーは解消されませんでした。
%sudo rm -rf /Library/Developer/CommandLineTools %sudo xcode-select --install
こちらを実行したら無事動きました。※インストール時間長い(数十分)ので、お茶しながら気長に待ちましょう。
pg gem の追加は無視してはいけない。
最初、データベース使ってないからと手順すっとばしたのですが、そのあとの以下のコマンドで華麗に失敗しました。
%git push heroku main
そのためにgem 'pg'を追加するのですが、自分のPCでbundle updateが失敗するという悲しみが発生。MacBookさんにpostgresqlをインストールして解消しました。
# これを、自分のPCにインストールしておきましょう。 % brew install postgresql % psql --version psql (PostgreSQL) 14.4
これで、無事git push heroku mainが成功して、APIサーバが起動しました!
動作確認はheroku openで作ったアプリのURLを確認したあとにcurlコマンドでチェックしました。
% curl -X POST -H "Content-Type: application/json" -d '{"id":1, "value": 3}' ${HerokuサーバのURL}/match {"value":3,"id":1}
サーバ上のログでも確認してみます。
%heroku logs -n 100
とやると、ずらずらーっとログが出てくるのですが、
2022-08-12T12:54:09.095074+00:00 app[web.1]: {"value":3,"id":1}
ってな感じでログが出力されていることを確認しました。地味に気をつけたい点としては、時刻表示がUTCという世界標準時刻なので日本時間にする場合は+9時間してあげる感じですね。この辺も設定変えられるらしいのですが、今回はこのままにしています。
まとめ「いま楽しいこと」に集中!
というわけで、無事Railsアプリケーションをサーバで動作させるところまでができました。
これ試す前に、自前のサーバでもちょこっとやってみてから、Herokuに変えたのですが、かなり作業が簡略化できて感動しました。めんど臭さに根負けして、いきなりやる気無くなってしまうのも勿体無いので、楽にできるところはとことん楽しちゃってしまって、「今自分が楽しいと思うことに集中する」のを大切にしていきたいと改めて思いました。ちなみに自前でサーバ構築もそれはそれで楽しいですよ😀なんというか、自分の拠点を作ってる感じがして、それこそキャンプ感ありますね。なおキャンプは・・以下略。
では、また!