sk

開発で得たこと

本番環境(Heroku)へアプリをデプロイ

この記事で行うこと

前回開発したアプリをHerokuへデプロイする。

現場では開発環境(dev)、ステージング環境(stg)、本番環境(pro)の3つに分けてアプリの開発を行います。 開発環境は自分のPCで開発を行います。本番環境は実際にユーザーがアクセスできる環境です。

ステージング環境は、開発環境で開発したアプリが自分のPC以外(本番環境と同じ環境)で期待通りに動作するかどうかを確認するための環境です。

前提

Herokuへのユーザー登録している。

登録していなければ登録をしてください。

Herokuアプリの作成

Herokuアプリを作成します。 ダッシュボード右上の「New」ボタンを押して「Create new app」を選択してください。

Heroku f:id:sksksksksk:20180725220542p:plain

アプリ名を決めるのでなるべくアプリ名を入力してください。 今回は本番環境なので末尾にproをつけて「ticket-reservation-pro」というアプリ名にしました。

このアプリ名は全ユーザーを含めて一意でなければいけないので、 被ってると「is not available」と警告が出て登録できません。

Heroku f:id:sksksksksk:20180725221013p:plain

一意になる名前を入力して、 「Create app」ボタンを押して、アプリを作成してください。

f:id:sksksksksk:20180725221221p:plain

Herokuとローカル(PC)を接続

アプリを作成したので開発環境のアプリをHerokuアプリへデプロイしたいのですが、 このままではローカルとHerokuが接続されていないのでデプロイできません。

まずローカルのticket-reservationのディレクトリで以下のコマンドをたたきローカルと接続されているリモート情報を確認します。

ticket-reservationのディレクトリであることを確認する。

ticket-reservation ユーザー名 $ pwd
/Users/ユーザー名/desktop/ticket-reservation

接続されているリモート情報を確認する。

$ git remote -v
origin  https://github.com/sagaekeiga/ticket-reservation.git (fetch)
origin  https://github.com/sagaekeiga/ticket-reservation.git (push)

リモート情報をよく見るとurlが表示されているのがわかります。 また、そのurlはgithubのものであるとわかります。

このリモート情報はgithubのものです。 ローカルPCからpushしたりするときはこの情報を元に接続されていることがわかります。

ここにherokuのurlを追加していきます。 以下の画像をご覧ください。

Herokuの管理画面から「Settings」タブをクリックします。 するとHerokuの接続用URLを確認できるので、このURLをコピーしましょう

f:id:sksksksksk:20180725222749p:plain

コピーしたHerokuのURLをticket-reservationのディレクトリに追加します。

ticket-reservation ユーザー名 $ pwd
/Users/ユーザー名/desktop/ticket-reservation
$ git remote add heroku https://git.heroku.com/ticket-reservation-pro.git

もう一度リモート情報を確認するとherokuのURLが追加されたのが確認できます。

$ git remote -v
heroku  https://git.heroku.com/ticket-reservation-pro.git (fetch)
heroku  https://git.heroku.com/ticket-reservation-pro.git (push)
origin  https://github.com/sagaekeiga/ticket-reservation.git (fetch)
origin  https://github.com/sagaekeiga/ticket-reservation.git (push)

データベースの変更

Herokuと接続ができたのでローカルのアプリをデプロイしたいところですが、 まだデプロイすることはできません。

Herokuでアプリを動かすためにはpostgresqlというデータベースを使う必要があります。 デフォルトでは、sqlite3がデータベースが設定されているのでsqlite3からpostgresqlへデータベースをローカルアプリ上で変更しなければなりません。

Gemfileを以下のように変更してください。

Gemfile

・・・・
group :development, :test do
  gem 'sqlite3' # デフォルトではdevelopmentの外にsqlite3が書いてあるのでここに移動する。
end
gem 'pg', group: :production
・・・・

Gemfileを修正したらインストールしましょう。

bundle install

次にdatabase.ymlを変更します。 ここにはどのデータベースをどの情報(ユーザー名やパスワードなど)で使うかが記されているので、 sqlite3からpostgresqlを使いますと変更してあげましょう。

config/database.yml

production:
 <<: *default
 adapter: postgresql
 encoding: unicode
 pool: 5

Herokuへデプロイ

これで準備は完了しました。 修正したアプリを一旦Githubのレポジトリへあげて、Herokuへpushしましょう。

$ git add .
$ git commit -m 'feat: postgresql'
$ git push
$ git push heroku master

カリキュラム中の方は、マイグレーションをデータベースへ反映させないといけないので以下のコマンドをticket-reservationディレクトリで叩いてください。

$ heroku run rails db:migrate

するとこのようにHerokuアプリ上で確認することができます。

TicketReservation

f:id:sksksksksk:20180725225158p:plain

次の記事

www.sendai-freelance.com

ProgateやRailsチュートリアル、プログラミングスクールを通い終えたが現場のコードはかけない、

一体どうやって書くの?と思っているエンジニアのみなさんのためのチュートリアルを公開しています。

チュートリアル