【プログラミング初心者向け】railsアプリをherokuにデプロイする方法

  • 2018年12月8日
  • 2019年4月27日
  • heroku

f:id:daikiyano:20190209104439p:plain

画像出典:

jp.heroku.com

今回、プログラミング初心者の方を対象に作成したrails アプリケーションをherokuにデプロイする方法についてご紹介したいと思います。

herokuとは?

Heroku(ヘロク)はPaaS(Platform as a Service)と呼ばれるサービスで、rubyやPHPなどのプログラミング言語を用いて開発したwebアプリケーションを手軽に全世界に向けて公開することができます。初期の頃は、rubyのフレームワークRuby on Railsのみを対応していたのですが、現在ではJava、Node.js、Scala、Clojure、Python、PHP、Goなど複数のプログラミング言語をサポートしています。

herokuについての概要と登録方法は以下のサイトをご参照ください。

www.for-engineer.life

railsアプリをherokuにデプロイする手順

バージョンの確認

  • ruby 2.5.1
  • Rails 5.2.1.
  • git 2.17.2

routesの設定

まず、routesファイルに行き、rootを設定しアプリのトップページを定義します。
このトップページの設定をしておかないとherokuにデプロイ(本番環境)した際にエラーが表示されてしまいます。

私の場合、tweeetsのindexページをトップページに設定します。

config/routes.rb
Rails.application.routes.draw do
resources :blogs
root 'tweeets#index'
end

gemfileの設定

続いてgemファイルの設定を行います。

herokuではPostgreSQLがデータベースとして設定されているので、環境ごとにデータベースが対応できるようにgemfileの設定を行なっていきます。

www.for-engineer.life

私の場合、SQLite3を使用していますが、gem ‘sqlite3’をdevelopment環境とtest環境のみに対応できるようにgroup :development, :test do〜end内に移動させます。

group :development, :test do
gem 'sqlite3'
end

続いてherokuにデプロイした際にproduction環境のみでPostgreSQLが対応できるように
group :production do〜end内に gem ‘pg'(PostgreSQLの略)を追加します。

group :production do
gem 'pg'
end

この設定でdevelopment環境とtest環境ではsqlite3、
herokuにデプロイ(production環境)した際はPostgreSQLがそれぞれ対応できるようになります。

gem fileの設定が終了したらbundle installを行うのですが、group :production do〜end内以外の
gemをインストールするために以下のように実行します。

$bundle install --without production

config/database.ymlの設定

続いてproduction環境でPostgreSQLが使えるようにconfig/database.ymlでデータベースの接続の設定を行います。
productionの部分を以下のように記載します。
この際に注意するのがproduction:以降はインデント、半角スペース2個分の空白を空けて記述するようにします。
このインデントの設定が正しくできていないとうまくデータベースの接続が出来ません。

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

config/environments/production.rbの設定

続いてコンパイルの設定を行います。
デフォルトの状態だと本番環境での動的な画像の表示がオフになっているので、
このコンパイルの設定を行わないと本番環境で正しく画像や動画が表示させません。

config/environments/production.rbに行き、config.assets.compile = falseをtrueにします。

config/environments/production.rb
 config.assets.compile = true

これでrails側の設定は終了です。

herokuにデプロイしていくよ

gitについて分からない方は、以下のサイトをご参照ください。
私がgitの勉強をやっている時は、あんまり意味が分からなかったです。
サルには分かるけど、初心者はすぐには覚えられないのでご安心を。。笑
最近、「一週間ででマスター出来る◯◯」みたいな本たくさん出版されてますが、
そんなの不可能ですよね〜って毎回思ってます。笑

backlog.com

herokuにデプロイする際はgitを使用するので、フォルダをgitと紐付けます。

$git init

変更しコミットします。

$git add -A
$git commit -m "first commit"

herokuをインストール

続いてherokuのインストールを行います。

macの場合はコマンド上で以下のように実行します。

brew install heroku/brew/heroku

windoesの方はherokuのサイトからインストールすることが出来ます。

devcenter.heroku.com

PCにherokuをインストールしたら、herokuにログインをします。
コマンド上でheroku loginを実行します。

$heroku login

私の場合は、heroku login実行後、下の画像のようにherokuのログイン画面に自動的に遷移し、
ログイン出来ました。

f:id:daikiyano:20181208132351p:plain

画面が遷移しない方は、herokuに登録した際に設定したメールアドレスとパスワードを入力してください。

Enter your Heroku credentials:
Email: *******@gmail.com
Password: **********

続いてherokuに登録するアプリ名の設定を行います。
アプリ名を設定しなくても自動生成してくれるので、問題ありません。

$heroku create アプリ名

heroku createを実行したらいよいよherokuにデプロイします。

$git push heroku master

最後に本番環境でマイグレーションを実行します。

$heroku run rails db:migrate

f:id:daikiyano:20181208133540p:plain

マイグレーションが完了すれば、herokuへのデプロイは完了です。

f:id:daikiyano:20181208133814p:plain

herokuにデプロイする際の発生したエラーについてはまた別記事で載せたいと思います。

herokuへのデプロイは比較的簡単に出来ます。
デプロイする際は、development環境,test環境,production環境それぞれに対応した設定を行う必要があるので、
それぞれの環境の役割と流れの理解が深まります。また、デプロイすることによって作成したアプリを成果物としてURLを
企業の方などに提示することが出来ます。
是非、railsアプリを作成された方はherokuへのデプロイを試してみてください。

・参考サイト

qiita.com

jp.heroku.com

もし、よければ以下の記事もご覧になってみてください。

www.for-engineer.life

www.for-engineer.life

>文系エンジニア大学生の技術ブログ

文系エンジニア大学生の技術ブログ

社会が多様化していく中、大学生の学生生活も多様であるべきと考えています。主にエンジニア向けにITやプログラミングなどの技術系と大学生向けに休学、留学、海外生活、トビタテ留学、長期インターンに関する記事を書いています。