Herokuで発生したエラーメモ
Herokuで出たエラーメモです。
書かないと忘れてしまいそうなのでメモとして書きます。
※解決できない場合のgitでの戻し方の方が長くなってしまいました…
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 push
やgit 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書いたので↓のように追記してます
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コマンド