RailsでアプリをHerokuにあげるたびに何かしらのエラーに悩まされてはググってるので、今まで出会ってきたHerokuプッシュ時のエラーについて逐次ここに載せていきます。自分用メモ。
git push heroku master
は簡単なおまじないだけど、素人にはエラーの宝庫なんです。
Railsアップの準備はこことかを参考にしてください。
注意
以下に書いてある+
とか-
は差分のことで、+
の後ろに続く文字列を追加してくださいね!って事です。そのままコピペはしないように。
出会ったエラー達
Failed to install gems via Bundler
本番環境でもSQLite3が設定してあるとこういったエラーが出ます。
rails new
で普通に作ると初期状態でSQLite3に設定してあるけれど、Herokuは SQLite3 に対応していないので、あげる際は PostgreSQL(pg) に設定してあげる。
- gem 'sqlite3'
group :development do
+ gem 'sqlite3'
end
group :production do
+ gem 'pg'
end
production:
+ adapter: pg
+ database: db/production.pg
- <<: *default
- database: db/production.sqlite3
こんな感じに本番環境をpgにしてあげれば動くと思います。(自分はこれでokだった)
Precompiling assets failed.
git push
したときにrake assets:precompile
が失敗したとのことなのでこれを追加。
+ config.assets.initialize_on_precompile = false
NoMethodError: undefined method
[]' for nil:NilClass`
rake assets:precomiple
中にこんなエラーが起きて毎度お馴染みのrake aborted!
って怒られた。調べてみると、StackOverflowさんに答えがあって
application.css
をapplication.css.scss
にリネームすれば解決した。
WARNING
You have not declared a Ruby version in your Gemfile.
これはGemfileでrubyのバージョンを指定してないと出る忠告。gemfileにrubyのバージョンを追加するだけで消える。
$ ruby -v
ruby 2.2.3p173
バージョンは適宜変えてください。
+ ruby '2.2.3'
No Procfile detected, using the default web server (webrick)
エラーに比べると断然読みやすくて優しい。procfileがないよーって言ってるので追加してあげる。
web: bundle exec rails server -p $PORT # rails 起動($PORTは5000がデフォ)
Internal Server Error
git push heroku master
してheroku run rake db:migrate
してheroku open
してもこいつが出てくる。。
Internal Server Error(´・ω・
)`
Missing
secret_tokenand
secret_key_basefor 'production' environment, set these values in
config/secrets.yml`
Rails4.1でherokuへのデプロイに失敗(Missing secret_key_base
)
このサイトがとても分かり易かった!
.gitignoreにconfig/secrets.ymlがあればコメントアウトする。
# config/secrets.yml
次に環境変数に設定する値を以下のコマンドで出力させる。
$ bundle exec rake secret RAILS_ENV=production
# => xxxxxxxxxxxxxxxxxxxxxxxxxxxx
上記のコマンドで出てきた値(xxxxxx)をheroku上の環境変数(SECRET_KEY_BASE)に格納する。
heroku config:add SECRET_KEY_BASE=xxxxxxx
xxxxxには上記で出力された値をそのままコピペしてください。