日常のあれこれ。

フリーのフロントエンジニア。サーバーサイドも現在勉強中...webデザイン・フロントエンド・イラスト作成・LP用漫画作成を主なシゴトとしています^^日々学んだことをアウトプットしていきます。

railsアプリをherokuでデプロイする方法

f:id:creat4869:20190804022712p:plain

今回は、ruby on railsアプリをherokuで簡単にデプロイする手順を書いていこうと思います^^

ちなみに作成したrailsアプリのDBは、MySQLです。
あと、アプリはすでに完成している前提で、GitHub Desktopを使ってリモートリポジトリにもアプリを上げている状態で行います。

(※リモートリポジトリはherokuを使うのに全く関係ありませんが、
私がherokuでデプロイするとなったときに『リモートリポジトリを作成してるしてないって関係するのかな??』と疑問を持ったので...笑
結果リモートリポジトリはあってもなくても関係はありません!)


ではでは、進めていきたいと思います。

railsアプリ内でherokuにあげるための準備をする

すでに出来上がっているアプリをherokuにあげるための準備をしていきます。

Gemfileの設定変更

railsアプリには最初から、

gem 'mysql2', '>= 0.3.18', '< 0.6.0'


というような記述があると思います。
(※バージョンの部分は人によって違うかもしれません。)

この部分をまず、コメントアウトにします。
そして、group :development, :test do ~ endの中に以下のように記述します。

group :development, :test do
  gem 'mysql2', '>= 0.3.18', '< 0.6.0'
end


そして、あともう一つ。
どこでもいいのですが、分かりやすいようにGemfileの一番下に以下も記述します。

group :production do
  gem 'pg'
end


これは何をしているかというと、環境ごとのDBの変更をしています。
ローカルで開発していた時は、DBとしてMySQLをしようしていました。
しかしherokuでは、PostgreSQL(pg)というDBがすでにインストールされているので、
それに合うように変更しているのです!

上記のコードを詳しく説明すると、
開発環境(development)とテスト環境(test)ではMySQLを使い、
本番環境(production)ではpgを使う設定にしています。

この変更が終わったら、必ずbundle installをしましょう。
ですが、production環境にインストールするgemはローカル環境でインストールする必要はないので、以下のようにbundle installしましょう。

$ bundle install --without production


これで、group :production以外のgemをインストールすることができます。
これは--without productionというオプションをつけているだけなのですが、
このオプションは一度すればその後bundle installする時はしなくても勝手にproductionを無視してくれるので、一回だけすればOK!

ちゃんと--without productionが適応されているかの確認は、
railsアプリ内の.bundle/configが以下のようになっていたらちゃんとできています。

BUNDLE_WITHOUT: "production"

config/database.ymlの設定

次にdatabase.ymlの設定を行います。

productionのところを以下のようにすればOK。

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

config/environments/production.rbの設定

railsは本番環境でのプリコンパイルがデフォルトでオフになっています。
ですので、以下のように設定を変更しましょう。

config.assets.compile = false


config.assets.compile = true


に変更。

bin以下のファイル設定

binフォルダの中に数個ファイルがあると思います。
その全てのファイルの一番上に

#!/usr/bin/env ruby


というような記述があると思います。
もしこの記述が

#!/usr/bin/env ruby 2.3.1


といった風にバージョンが指定されていたら、そのバージョンの記述を削除しましょう。
削除すると全てのファイルの一番上の記述が以下のようになると思います。

#!/usr/bin/env ruby


これでOKです!

herokuの登録

次にherokuへの登録を行います。
以下のURLから行ってください。

https://signup.heroku.com/login


手順としては
①必要事項を記入してアカウント作成。
②メールが送られてくるので、メール内のURLを開く。
③パスワードを設定する。

これでアカウントが作成されました!

herokuを自分のPCと紐付ける

アカウント作成ができたら、herokuをPCと紐付ける必要があります。
今回はMacの環境での紐付け方を紹介します。

cliのダウンロード

https://devcenter.heroku.com/articles/heroku-cli

上記のURLに入って、macOSのところを見ましょう。

$ brew tap heroku/brew && brew install heroku


と書かれていると思います。
これをターミナルのホームディレクトリに打ち込みます。
これで必要なcliをダウンロードできます。

$ heroku --version


と打って、

>>heroku/7.0.47 darwin-x64 node-v10.1.0


というようなherokuのバージョンが表示されたら、インストールができています。

PCからherokuにログイン

ターミナルのホームディレクトリで以下のように打ち込みます。

$ heroku login


すると、emailとpasswordの入力を求められるので、herokuに登録したものを打ち込みます。

入力が完了できたら、紐付けは完了です!

herokuアプリの作成

herokuアプリの作成を行っていきます。
ターミナルで以下のように打ちましょう。

$ cd 作成したアプリ名
$ heroku create 好きなアプリ名


まず、herokuアプリを作成するために該当の作成したアプリのディレクトリまでおります。
そして、heroku createでアプリの名前をつけます。

『好きなアプリ名』のところはアプリのURLになるものなので、好きな名前をつけましょう。
ちなみにアンダーバーとかは使用できません。

入力してenterを押し、アプリのURLらしきものが出てきたら作成できています!
Name is already taken...と出たら、すでにその名前を誰かに使用されてしまっているので、
違う名前で再度行いましょう。

herokuにデプロイ

いよいよ、herokuへデプロイです!

$ git push heroku master


これだけでデプロイができちゃいます。
最後の方にURLが生成されているので、コピーしておきましょう!

このデプロイの中で、bundle installやら、プリコンパイルやらができています。


しかし、これで終わりではありません。
最後に本番環境でマイグレーションしましょう。

$ heroku run rails db:migrate


これで完了です!
表示されていたURLをブラウザに打ち込めば、サイトが表示されていると思います!


基本はこの流れでデプロイできるのですが、
最後のデプロイとマイグレーションのときに私はエラーが発生しました。
すぐに解決できたエラーでしたが、そのエラーの解決方法はまた違う記事で書きたいと思います!

お疲れさまでした^^