Ruby

Ruby on RailsのアプリをHerokuにデプロイするときに出てくるエラーの解消方法 [error: failed to push some refs to ~]

こんにちは。

 

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のデプロイエラー解消でした。