はじめに
HerokuでRailsアプリを動かしたことがある経験者がGoogle App Engineでアプリを動かそうとする際、最初に遭遇することが多いエラーの解決方法について記録しておきます。
問題点
デプロイ成功後にブラウザからAppEngineのURLにアクセスすると「An unhandled lowlevel error occurred. The application logs may have details.」と表示される。
調査
AppEngine上で動作するアプリのログはSTACK DRIVER > ロギング > ログ
から確認することが出来ます。
原因
ログの内容を確認すると、
# <RuntimeError: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`>
という一文が見つかるため、secret_key_base
の設定漏れであることがわかります。
Herokuでは環境変数SECRET_KEY_BASE
が自動的に設定されますが、AppEngineでは自分で設定する必要があります。
解決方法
secret keyを生成して、app.yaml
に環境変数SECRET_KEY_BASE
として追記します。
$ bundle exec rails secret
37e96b793ded332380ddbbf55f3435506af415fc1100ac34ab1a185c7e971a6b2f270143f2c714c33a4c376ebfacae09b4d96f0392b633c1e0326ba369ce88c2
entrypoint: bundle exec rackup -p $PORT
env: flex
runtime: ruby
env_variables:
SECRET_KEY_BASE: '37e96b793ded332380ddbbf55f3435506af415fc1100ac34ab1a185c7e971a6b2f270143f2c714c33a4c376ebfacae09b4d96f0392b633c1e0326ba369ce88c2'
再度デプロイを実施して他に設定漏れなどがなければアプリへアクセス可能になります。
公式ドキュメント
RailsアプリをAppEngineにデプロイする手順については公式ドキュメントにも詳しい解説があります。
Running Rails 5 on the Google App Engine flexible environment | Ruby | Google Cloud Platform