こんにちは。
Ruby on Railsで作成したアプリをHerokuでデプロイする際、sqlite3 と PostgreSQLの違いによってエラーがよく発生します。
Railsの開発環境ではsqlite3を使いますが、Heroku上では基本的にPostgreSQL。
Gemfileに、「開発環境ではsqlite3使うよ」「本番環境(ここではHeroku)ではPostgreSQL使うよ」と書いてあげないと以下のエラーが起きます。
error:failed to push some refs to ‘https:git.heroku.com/<example_addres>.git’
というエラーが出ていたらこの記事を読む意味はあると思います。
ちなみに、<example_address>は各々で設定されたアドレスが入ります。
ぼくの場合はmysterious-caverns-21359 (Rails Tutorialやってます)
原因はおそらくですが、「Gemfileで開発環境と本番環境のDBの設定が出来てない」です。
具体的な解決策行きます。
目次
1.Gemfile開いて、書き換える
まずGemfile開きます。
10行目くらいにある gem ‘sqlite3’ を消します。
そして、一番下までスクロールして、赤く囲んだところを書き加えます。
書き加えたのは
group :development do
gem ‘sqlite3’
end
group :production do
gem ‘pg’, ‘0.20.0’
gem ‘rails_12factor’
end
です。
development(開発環境)ではsqlite3、production(本番環境)ではpg(PostgreSQL)を使うということです。
rails_12factorの詳しい12の要素は以下を参照してください。
12 Factor App – モダンなサービス運営に必要な12のインフラ的要素
2. bundle install –without production 打つ
ターミナルで bundle install –without production と入力してEnter。
本番環境以外のbundleがインストールされます。
3. git諸々 + git push heroku master 打つ
git add、git pushなどgit使ってる方は諸々を入力します。
その後、デプロイのために git push heroku master 入力してEnter。
すると下の方に *[new branch] master -> masterが出ると思います。
はいこれでデプロイ完了です。
4. データベース反映
先ほどでデプロイは完了したのですが、データベースのデータが反映できていないため、アクセスしても以下の画面が出ると思います。
これを治すためのコマンドは、 heroku run rake db:migrate です。
色合いがキレイな画面ですね。
これで、自分のHerokuアドレスにアクセスすれば、うまく画面が表示されると思います。
終わりに
以下の動画がめちゃくちゃ参考になります。
プログラミング関連の動画って、そんなに英語理解できなくてもコードが理解できればまぁいいんじゃないかなと思います。
とは言っても、英語理解できればメリットたくさんなので、継続して勉強していきたいです。
話それましたが、Herokuのデプロイエラー解消でした。