自分がrailsチュートリアルを進めていく上で、発生したエラーを記録していきます。
ハードはMacBook Air, 開発環境はVScodeを用いています。
#Railsチュートリアル1章 1.5 デプロイする
「よしデプロイするぞ!GitHubにプッシュするやり方と似てるゾ!」
「これならできる!!!!!!」
$ heroku login
$ git init
$ heroku git:remote -a アプリの名前
$ git add .
$ git commit -am "first commit"
$ git push heroku master
その結果
$ git push heroku master
~省略~
remote: Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
~省略~
remote: Could not create Makefile due to some reason, probably lack of necessary
~省略~
remote: An error occurred while installing sqlite3 (1.4.2), and Bundler cannot continue.
~省略~
remote: !
remote: ! Failed to install gems via Bundler.
remote: ! Detected sqlite3 gem which is not supported on Heroku:
remote: ! https://devcenter.heroku.com/articles/sqlite3
remote: !
remote: ! Push rejected, failed to compile Ruby app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to tutorial-app-20200717.
remote:
To https://git.heroku.com/アプリ名.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/アプリ名.git'
と、頭を抱えることになります。
gitにプッシュした後、herokuにデプロイするぞ!とそのまま突き進んだ人がハマるエラーです。
このエラーは、HerokuではSQLiteがサポートされていないために発生します。
そこでデータベースをPostgreSQLに変更します。
「よし!解決方法がわかったからやっていくぞ!」と、1.5.1 Herokuのセットアップや、初心者です。Herokuでbuildに失敗し続けてしまいます。。を試してみるものの、上手くいきません...
上記のサイトの方法を試しても駄目だった人は、一から作り直すことになりますが、最終手段として次の方法を試してみてください。
#解決方法
###rails new の段階でデータベースをPostgreSQLに指定する!
また一からやり直す解決策になりますので、ご了承ください...
「大丈夫みんなならできるよ!」
早速やっていきましょう。
$ rails _5.1.6_ new アプリ名
$ rails _5.1.6_ new アプリ名 --database=postgresql
これを実行すると、最初からPostgreSQLが指定されたrailsフレームワークが生成されます。
あとは、これまでと同様の手順で進めて大丈夫です。一通り設定が終わりましたら、herokuにpushしてみてください。
####ここまでやればherokuに問題なくデプロイできるようになります。
役に立ったら是非LGTMボタンをポチッと押していただけると嬉しいです。
一緒に Rails学習 頑張りましょう!
ちなみに、railsのバージョン指定をせずに、rails6でこの操作を実行すると、次のようなエラーが発生します。
$ rails s
を実行し、[localhost:3000](http://localhost:3000/)にアクセスしてみてください。
>赤いエラー画面に、次のようなエラー文が表示されるはずです。
FATAL: database "アプリ名" does not exist
ActiveRecord::NoDatabaseError
>この場合の解決方法はこちらにまとめました。
[rails6で ActiveRecord::NoDatabaseError を解決する](https://qiita.com/satomomo0222/items/0d7f91b9c5403e9d2b68)