railsアプリをherokuでデプロイする方法
今回は、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をブラウザに打ち込めば、サイトが表示されていると思います!
基本はこの流れでデプロイできるのですが、
最後のデプロイとマイグレーションのときに私はエラーが発生しました。
すぐに解決できたエラーでしたが、そのエラーの解決方法はまた違う記事で書きたいと思います!
お疲れさまでした^^