バックエンドからフロントエンドまで、広範囲に関わらせていただくことが増えたトリヤベです。
先日、某案件で環境構築をせっせと行いました。ちなみに、VROSちゃんはAWSで動いていますが、最近はGCPに浮気気味です。
AmazonのAWSとGoogleのGCP、そしてMicrosoftのAzure。どれを選ぶのかは、割と好み的な問題であって、実はそんなに変わらないのが面白いなと思ってます。
今回の話
VROSでいつも仲良くしてるAWSちゃんではなく、今回はGCPちゃんに本格的に?浮気する案件なので、調査しつつ実装を進めています。VROSの時同様に自分でnginxとかunicornとかの組み込み設定をして……なのかと思いきや、GAEなら勝手にやってくれます。開発環境構築に躓く方も多いと思いますが(私もそうでした)、そんな方には大変助かる機能です。
注)ちなみに似たような機能はAWSでもあります。後で知りました。
それで、下記のサイト二つを参考にさせていただきながら、作業を進めていたわけです。
App Engine フレキシブル環境での Rails 5 の実行
GoogleAppEngine+CloudSQL(MySQL)+Rails5環境を作成する
やっぱり詰まるんですよね!知ってました、そう簡単にdeploy出来れば苦労はしません。出てくるエラーログ。
……読めない、分からない!大体そういう時は、エラーログをそのままGoogle検索&Google翻訳にかければ分かるわけですね。だが、しかし……分からず!1時間くらい悩み続けるわけです。
前例がなさ過ぎるパターンの時って、本当見つからなくて焦ってと悪循環なわけですね。
諸先輩
我らが救世主、諸先輩の方々に登場して頂きましょう。
今回使ったのは、Teratailというサイト。15分調べて分からなかったら、ここに聞け!回答率9割を超え!優秀なエンジニアが多く居るサイト!
質問で大切なのは、5W1Hです。何をしたらそうなったのか、どこでそうなったのか、どのようにしたらそうなったのかと……それをつらつらと書いていくわけですね。
自身の環境や、設定などを書いて、さぁ最後にエラーログを転載するぞと思った矢先……!ひらめきがやってきたのです!
蓋を開けてみたら、結局原因は「Windows上でRails newしたのを、そのままLinux環境に持っていったら門前払いされた」というものでした。参考までにエラーログ載せておきます。
Step 12/16 : RUN bundle install --deployment --without="development test" && rbenv rehash
---> Running in da3c5facc792
Your bundle only supports platforms ["x64-mingw32"] but your local platforms are
["ruby", "x86_64-linux"], and there's no compatible match between those two
lists.
The command '/bin/sh -c bundle install --deployment --without="development test" && rbenv rehash' returned a non-zero code: 16
そもそも「x86_64-linux」の時点で気づけと言う話なのですが……。
結局、質問せずに、Linux環境のベースもコマンドで構築して、再deployしたらめでたくdeployが通ったというお話でした。
bundle lock --add-platform ruby
bundle lock --add-platform x86_64-linux
終わってみれば「あの1時間なんだったんだろう」と虚しくなります。Slackで報告したらブログにしてみたら?という話だったので、デプロイ中暇なのもあり書いた次第でした。
質問する前にスクリーンショット撮っておいたので、供養しておきます。
あとは画像のとおりに、質問をする際Teratailはマークダウン記法で右側にプレビューが出るのですが、それを見た時に気づいたというのもありました。
全体を俯瞰して見てみたら、解決策が見えたってことだったのかなと思っております。
行き詰まったらコーヒーでも飲んで一旦リセットしてから、俯瞰して見る。これからも意識して開発していきたいと思います。
PS.
>前例がなさ過ぎるパターンの時
私はWindowsで開発してるんですが、検索してもmacでの開発事例ばかりでてきて。これって、WindowsでRuby開発してる人が少ないってことなんですよね……Macにした方が良いのかなと開発するたびに思ってしまいます。Windows、好きなんだけどなぁ……。