Help us understand the problem. What is going on with this article?

[無料で簡単]RailsアプリをHerokuで公開する方法

プログラミングの勉強日記

2020年8月8日 Progate Lv.226

目標

 すでにローカルで作成済みのRailsアプリケーションをHeroku上で公開する。(すでにGitHubにコードをプッシュ済み)

方法

1.Herokuに新規登録をする

 Herokuの公式サイトから新規登録を行う。(無料)

2.Heroku用のデータベースをインストールする。

 Gemfileを以下のように書きかえる。

Gemfile
# 開発環境、テスト環境
group :development, :test do 
  gem 'sqlite3' # sqlite3
end

# 本番環境
group :production do 
  gem 'pg' # PostgreSQL
end

0808.PNG
 
 Gemfileを書きかえたら、反映するためにbundle installをする。

ターミナル
$ bundle install

データベースの設定ファイル(config/database.yml)を書きかえる。

config/database.yml
# 変更前
production:
  <<: *default
  database: db/production.sqlite3

# 変更後
production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

0808-1.PNG

2.5. herokuコマンドを使用する(herokuコマンドが使える人は飛ばしてOK)

 herokuコマンドを使うためには、heroku toolbaltというツールをインストールする必要がある。
 こちらからインストールすることができる。

 以下のコマンドでherokuコマンドが使えるか確認できる。(私はGit Bashで行った)

ターミナル
$ heroku --version

3.Herokuにログインする

ターミナル(私はGit Bashを利用した)からログインする。

ターミナル
$ heroku login

ブラウザで以下のような画面が開く。

0808-2.PNG

 画面のLog Inを押すとログインすることができる。(ターミナルでも確認できる)

0808-3.PNG

4.Heroku上でアプリを作成する

 自分でサービス名を決めて、以下のコマンドを実行する。サービス名は、最初が文字で始まり、最後が文字または数字である必要があり、小文字、数字、ダッシュのみを含めることができる。

ターミナル
$ heroku create サービス名

 アプリが作られていれば、https://サービス名.herokuapp.com/にアクセスすると以下の画面が出てくる。

0808-4.PNG

5.Herokuにコードをプッシュする

 GitHubにコードが管理されていることが前提。

ターミナル
$ git push heroku master

 成功すると、先ほどのURLをリロードすると以下の画面が出てくる。

0808-5.PNG

ターミナル
$ heroku run rails db:migrate

 データベースを更新すると、先ほどのURLでサイトが表示される。

メモ(ファイルを変更した場合のコマンド)

ターミナル
$ git add  -A

$ git commit -m "メッセージ"

$ git push heroku master

$ heroku run rails db:migrate

データベースをリセット(初期化)する場合
$ heroku pg:reset DATABASE

問題点【追記】

以上の方法で、Heroku上Railsアプリケーションを公開することができた。
しかし、carrierwaveとcloudinaryを用いて画像を投稿する機能を作成したが、この部分がうまくいかないので、もう少し試行錯誤してみようと思う。
Herokuにcloudinaruを追加するときにクレカの登録が必要みたい、、?
[Heroku]Cloudinary環境においてCarrierwaveで画像をアップロードで解決しました!

参考文献

挫折した人必見!HerokuでRailsアプリを公開する方法
herokuのデータベースをリセット/リストア/再構築する
HerokuにRailsアプリをデプロイする手順

mzmz__02
2020年5月26日から毎日投稿しています。 フロントエンドエンジニアを目指し、独学で勉強中です。
https://www.instagram.com/bb___m13
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away