14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Heroku デプロイで出たエラー【初心者向けメモ】

Last updated at Posted at 2019-01-29

Herokuで発生したエラーメモ

Herokuで出たエラーメモです。
書かないと忘れてしまいそうなのでメモとして書きます。
※解決できない場合のgitでの戻し方の方が長くなってしまいました…

download.png

1. リポジトリ無いみたいなエラーが出る

heroku fatal: repository ~~~ dose noe exist

リネームなどした場合に発生するかもしれません。

サイト名(アプリ名)リネームしたからかも

testappにするとしたら

$ heroku rename testapp

↓のように変更される
https://testapp.herokuapp.com

リポジトリ間違ってますので再設定しましょう。testappのところにサイト名入ります。

$ git remote set-url heroku https://git.heroku.com/testapp.git

heroku git push先確認

$ git remote -v
heroku  https://git.heroku.com/sampleapp.git (fetch)
heroku  https://git.heroku.com/sampleapp.git (push)
origin  git@bitbucket.org:sampleuser/sampleapp.git (fetch)
origin  git@bitbucket.org:sampleuser/sampleapp.git (push)

git pushgit push heroku masterなどでpushする先を確認できます。違っていたら
$ git remote set-url heroku https://git.heroku.com/testapp.gitのように変更。

2. 前のバージョンに戻してしまう

$ heroku rollback v6

バージョン確認

heroku releases

下記のような表示される

v7  Deploy a3525aaa         samplemail@gmail.com  2019/01/19 15:52:18 +0000 (~ 5m ago)
v6  Deploy 44cf704a         samplemail@gmail.com  2019/01/19 15:17:20 +0000 (~ 40m ago)
...

使うかわからないですけどバージョン確認して戻すことが可能です。確認してv7が最新のようだったらv6にしたら前の状態に戻せます。

3. 原因不明のApplicationError

とりあえずHeroku再起動してみましょう

$ heroku restart --app application_name

参考記事
https://qiita.com/Oakbow/items/1565922ddcdea0ce9ab5

4. Cloud9でherokuコマンド使えない

$ source <(curl -sL https://cdn.learnenough.com/heroku_install)
$ heroku --version

heroku --versionは確認です。バージョンが出たらOK

5.ActiveSupport::MessageEncryptor::InvalidMessage

Encrypted Credentialsでキーなどを秘匿化できる。
TwitterのAPIキーをベタで書くわけにもいかないので
素晴らしい記事を参考にやりました。Rails 5.2以降で使えるようになり、Encrypted secretsよりも推奨されている。

secrets.ymlや環境変数をRails 5.2のEncrypted Credentialsに移行する

解決手順

先ほどのリンク先で確認していただければいいですが

$ EDITOR=vim bin/rails credentials:edit

これを打つと秘匿情報ファイルと鍵ファイルを生成。vimで開く
私はtwitter API書いたので↓のように追記してます

.rb
twitter:
  twitter_api_key: 1234567891011121314
  twitter_api_secret: 345678910111213141516

# aws:
#  access_key_id: 123
#  secret_access_key: 345

# Used as the base secret for all MessageVerifiers in Rails, including the one $
secret_key_base: aaaaaaaaaaadddddddddddgggggggaaaaaaaaaaaaaaaaaaaaaaaaaa

蛇足でしょうがvimで保存して閉じるのはEsc : wqです。

herokuはmaster.keyをコピーしておけばいいというわけにはいかないので、環境変数で設定。

$ heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

git addしてコミットして

$ git push heroku

私の環境ではこれで解決しました。

番外編 webpack関係

vue.js とRailsで作っていた。とりあえずdeployするかと試したらこんなエラーが

ActionView::Template::Error (Webpacker can't find main in /app/public/packs/manifest.json. Possible causes:
2019-06-16T10:32:21.913055+00:00 app[web.1]: 1. You want to set webpacker.yml value of compile to true for your environment
2019-06-16T10:32:21.913057+00:00 app[web.1]: unless you are using the `webpack -w` or the webpack-dev-server.
2019-06-16T10:32:21.913060+00:00 app[web.1]: 2. webpack has not yet re-run to reflect updates.
2019-06-16T10:32:21.913062+00:00 app[web.1]: 3. You have misconfigured Webpacker's config/webpacker.yml file.
2019-06-16T10:32:21.913064+00:00 app[web.1]: 4. Your webpack configuration is not creating a manifest.
2019-06-16T10:32:21.913066+00:00 app[web.1]: Your manifest contains:

英語だが回答があった
https://github.com/rails/webpacker/issues/532

I just noticed that /public/packs is in my .gitignore. This was generated by Rails using the rails new --webpack=react command. Could this have something to do with this?

-Yes that's it - if you compile assets locally heroku won't precompile
So either - remove it from gitignore or don't precompile locally and let heroku do it i.e. delete the public/assets folder

ローカルでasset関係コンパイルするとherokuではやらないよと。
ローカルでコンパイルされないようにするか、.gitignoreにpackが書かれてるから、削除してそれもpushされるようにすればいいと。

付録git使って戻す、デプロイ手順のメモ

どうしても解決できない場合、初心者なら下手にあがくより作り直した方が早いかもしれません。

ファイル追加していたらgit addしてから戻します。

$ git add -A
$ git checkout master -f

前回のコミットまで戻れます。

昔のブランチからやり直したい…

git reset --hard 昔のコミットのハッシュ値

ついでに、ハッシュ値確認方法。(16進数)「q」で終了できる。

git log --oneline

リモートも戻す

※かなり注意が必要です。git reset --hardだとローカルだけが特定のコミットまで戻った状態です。どうしようもなくなってリモートも戻す必要があるかもしれません。その時は

$ git push -f origin HEAD:master

強制的にpush。当然リモートが現在のローカルの状態になりますので注意。

まともに動いていた状態からやり直した方がいい場合は使いましょう。

アプリ新規作成

$ heroku login
$ heroku create

作ったばかりならば作り直した方が早いかもしれませんので一応。

Herokuにログインしてその後create。
pushしてDB使っていると思うので当然migrateも忘れずに

$ git add -A
$ git commit -m "deploy"
$ git push heroku
$ heroku pg:reset DATABASE
$ heroku run rails db:migrate

無事作れたら前のアプリはherokuの自分のページ(Dashboard->setting)行って消してもいいと思います。アプリの作れる個数にも制限あるので。

使いそうなgit情報まとめ

基本的なgitコマンド書いてある記事
gitコマンド

14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?