💎 Herokuへのデプロイエラーの記録(7/28〜8/2)[後編]
作成日: 2021/08/03
0

Railsチュートリアルを威勢良く始めたものの1章の最後でエラーに叩きのめされる話(後半)

2日目(7/29)

この時点でようやくbundlerの【バージョン】が怪しいと気づいた
(「gemfileの依存関係が変更されました」って2回も書かれてたんで)
ただし

  • bundlerの正体がよく分からず。安易に触るのが怖い。
    →ネットで解決情報を色々読んだけどコマンド入力をためらった
  • もっと調べてるうちにbundlerに関係の深いGemfileとGemfile.lockってファイルの存在を知る
  • そうこうするうちにGemfile.lockの最後に書かれてる【BUNDLED WITH 〜〜〜】というバージョン情報がHerokuと違うことに気づく
  • 「じゃあGemfile.lockってファイルに書かれてる最後の行の【BUNDLED WITH 〜〜〜】のバージョン情報を手動で書き換えればいいんじゃん?」と思った
  • 書き換えても良いのかな〜といろいろ調べるうちに
    「Gemfile.lockは手動で書き換えたら後でえらいことになるよ!」 という情報にぶち当たる
  • Gemfile.lockが書き換えるべきファイルではないことが滔々と書かれてる情報によると
    Gemfileは手動で書き換えてOK だけど、Gemfle.lockファイルは自動更新されるものなので手動で書き換えちゃダメ!  という注意書き
  • でも多分このGemfile.lockってファイルがHerokuと一致してないからのエラーなんじゃないの?と思ってさらに調べる
  • とりあえず色々とゴニョゴニョとコマンド入力して最後に

$ git push heroku master やった ら…

以下の新たなエラーが追加されただけ…orz…

remote:  ! ## Warning - The same version of this code has already been built: dc4d5~~hogehoge~~(ビルトされたプロダクトのシリアルナンバー的な何か)
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version dc4d5~~hogehoge~~(ビルトされたプロダクトのシリアルナンバー的な何か)
remote:  ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote:  !
remote:  ! If you are developing on a branch and deploying via git you must run:
remote:  !
remote:  !     git push heroku <branchname>:main
remote:  !
remote:  ! This article goes into details on the behavior:
remote:  !   https://devcenter.heroku.com/articles/duplicate-build-version
remote: 
remote: Verifying deploy...
remote: 
remote: !       Push rejected to agile(デプロイしたランダムな何か)
remote: 

「ブランチ違うくね?ってか、お前、このプロダクトUpしたの最近で2回目やろコラ!」

的なエラー記述も見受けられHeroku様に怒られてることはわかって凹む

3日目(7/30)

  • Gemfile.lockを手動で書き換える方法はないが、bundlerを更新すれば自動でGemfile.lockも書きかわるということが判明
  • bundlerの更新方法を調べる
  • 「bundlerをuninstall(削除)」して、その後「bundlerのinstall(入れ直し)」すれば良いらしい ということが判明
  • とりあえずuninstallを実行してみると…なぜか知らないけどコマンドが通らない…(弾かれる)
    ※後で「そうだったのかな?」と思ったこと > Cloud9の画面が複数開いてた…
  • gem list | grep bundler で 現在入ってるbundlerを確認…入れた覚えは無いのになぜか2つ入ってた…(なんかbundlerって複数のバージョンが入るらしい)
  • どこかで見た rm ~/.gemrc ってのをやって何かをクリアにした(←よくわかってない…)
  • Heroku が悪いのかと思ってHerokuを触る。
    でもさっぱりわからない(GitHubみたいにファイルやフォルダが表示されてるわけじゃないので全くのブラックボックス)
  • $ gem install bundler -v 1.1~.3はやってるけど
    git add しないといけないらしいってことに気づいて

git add して再び git push heroku master

エラーすら何も変わらず…

4日目(7/31)となるはずだったけど3日やって全く霧の中で気力が湧かず放置して部屋掃除(カラボサイズの本棚2本作成…)

5日目(8/1)

  • 「逃げちゃダメだ!逃げちゃダメだ!逃げちゃダメだ!」 と念じて気合を入れ直しリトライグーグル。
  • git commit しないとだめなのか?と思って
    git commit -a -m “Update Gemfile for Heroku”
    ってやって再び push heroku master
  • 意地になって push heroku master をこのあと3回
  • もはやエラーが一言一句同じもの。逃げたい…
    気力が「もう無理!しんどい!(逃げたい!)」と叫んでたし翌日早起きしないとだったのでその日は終了。

6日目(8/2)

  • この日1日忙しいのがわかっていたので午前中で解決できなければ誰かに助けを求めよう、と決めてググる。
  • 何度も同じネット情報にぶち当たり、自分の中ではもう無理。・゚・(ノД`)・゚・。 (この時点で午後2時)
  • 迷惑だろうな…と思いながら、とある人に「ちょっと聞きたいことがあるんですが…」とDMを送る。。。
  • バイト帰宅後、とりあえず自分で出来そうなことを一通り試そうと思って、5日間で色々集めた(うろ覚えな)情報をもとに、コマンドを選別し手順をちょっと考えてコマンド入力開始
  1. ローカルリポジトリに移動
  2. ruby -v
  3. bundler -v
  4. gem uninstall bundler -v 1.1~.2(バージョン指定で削除)
  5. gem install bundler -v 1.1~.3(バージョン指定で入れ直し)
  6. bundler -v (確認 入れ直したやつ)
  7. bundle update
  8. bundler -v (確認 入れ直したやつ)
  9. git commit -am “Bundler change version 1.1~.2 > 1.1~.3”
  10. history (コマンドを確認)
  11. heroku —-version
  12. heroku login -i
  13. git push heroku master

え? あれ? なんか……通った?! え? どうした?! マジ? あれ?!

ってなりました。。。。
つまり……

bundlerのバージョンが0.0.1違うだけでHeroku様は全く受け付けてくれないことが判明。

Heroku様、弥勒菩薩様に似た名前なのにどんだけツンデレ……

以下、上記手順を4から考察。

手順4:おそらく効果なかったと思う(最後に確認したら元のバージョンのbundlerまだ残ってたし…)
手順5:バージョン番号をGemfile.lockの最終行【BUNDLED WITH 〜〜〜】のものに決め打ちで入れ直し
手順6:バージョンは入れ直したものになってた
手順7:個人的にはこれが一番びっくりした……なんか、一気に80行くらいログが吐き出された。
ここでようやくbundlerのバージョンが本当に変更されたんだと思う
手順8:一応もう一度bundlerのバージョンを確認
手順9:どっか(もう何を見たか覚えてない…)で
「bundlerを変更したらちゃんとcommitしてあげないとダメだよ」 って情報を読んだので適当コメント入れてcommit
手順10:一回コマンドを確認
手順11:Heroku様のバージョンも確認
手順12:Heroku様にログインしとく
手順13: git push heroku master でめっちゃズラズラとログが吐き出されていって
「そのまま行け〜〜!!」 ってお祈りを捧げつつ見守る
(後半あたりにrubyのバージョン古くね?とかで4回くらい警告は出てたけどログは止まらなかった)

bundlerはいくつか並存しててもいいけど Gemfile.lockの最終行に書かれた【BUNDLED WITH 〜〜〜】のバージョンはHerokuのbundlerのバージョンと一致させる必要がある

ってことがわかりました。

付記:
なぜここまで残すのかというと、

  • コマンドの履歴(history)は割と残してる。
  • コマンドラインを適宜コピペしてメモ帳に保存する、という面倒なことをやってる。
    今日の自分(のエラー)は明日の他人(のエラー)。
    自分のエラーはまた自分でハマル(嫌な再現)可能性が高いので自分なりのエラー履歴を残しておくと後で自分用備忘録になるから…

最後にHerokuのログも確認したりなどして(めちゃくちゃ細かくて読解できない…)終了しました。

ちなみに

  • Herokuのデプロイ後、現在のローカルリポジトリ内のbundler(gem list | grep bundler )はこんな感じ 
    bunder (1.1~.3, default: 1.1~.2)
    bundler-unload (1.0.2)
    rubygems-bundler (1.4.5))
    でした!

ひとまず終わり!
 続いてRailsチュートリアル2章に入ります!

SJC-P1.4/心理学検定特1級所持 過去:専門学校で非常勤講師(複数) 現:フリーター/2児の子持ち/家庭教師バイト中 Doing:#HTML #CSS #JavaScript #Ruby #Rails #心理学@放送大学(心理と教育コース) Webアプリを開発したくて日々勉強中