技術ブログっぽいなにか

Ruby・Railsメインでいろんなこと書きます

Herokuにpushできたのにアプリケーションが動作してなかった

Railsプロジェクトがデプロイできるところまで作れたので
試しに作業中のブランチを(まだmasterにmergeしてないので)pushしてみるか!と思ってやってみた

$ git push heroku <branch-name>

のはいいんだけど、heroku createしたときの灰色の画面のままだった…

結論

pushした時のコマンドが間違っていたので
正しくpushができていなかった(泣

試したこと

1. migrateする

例の灰色の画面(スクショ撮り忘れた)のままだったので とりあえずmigrateしてみる

$ heroku run rails db:migrate

rails db:createはpush時にやってくれるけど migrateは自分でやらないといけないのでね

そしたらrails: command not foundって言われた

2. bundle install する

railsがないってことはbundle installしたらよい?

$ heroku run bundle install

結果、bundle: command not found

ほんとうに…?

3. gem install bundler する

bundle コマンドが叩けないってことはbundler がないってことなので bundlerインストールしたらよい?

$ heroku run gem install bundler

そしたら今度はpermissionがなんとかって言われてエラーになった(どんなエラーかあんま覚えてない)

4. ファイル構成を確認する

permissionとか言われたから管理者だれになってるんだろう?と思って確認してみた

$ heroku run ll

llコマンドはls -lのことですね。
結果なにも返ってこなかったので、「空ってことはpushがうまくできてないのでは!?」ということに気がついた…!!!

解決策

$ git push heroku <branch-name>

をもう一度実行してみる
と、問題なくpushはできる…特にエラーになったりはしていない模様…

調べていたところ、master以外のブランチをpushする時は

$ git push heroku <branch-name>:master

じゃないといけないということがわかった!!!!

ようするに、「どのブランチを」「どのブランチに」pushするのかを指定しないといけなかったっぽい。 普通に考えたら当たり前ではある。

$ git push heroku branch-name:master

で、ちゃんと表示できました!!!

pushがエラーにならずにできていたのは確かにその通りで、
でもHerokuがアプリケーションとして公開しているのはmasterブランチだけなので、例の灰色の画面が出ていた、という…。

確かにHerokuってmaster以外のブランチ指定してstaging環境とか作れますもんね。

補足

GitHubにpushするときも、

$ git push origin master

とかやるんだけど、
これって実は内部的には

$ git push origin master:master

をやっている。
同じ名前のブランチにpushする時は省略できるけど、そうじゃないときはちゃんと指定してねってことでした。

おわり。