画像出典:
今回、プログラミング初心者の方を対象に作成した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についての概要と登録方法は以下のサイトをご参照ください。
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の設定を行なっていきます。
私の場合、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の勉強をやっている時は、あんまり意味が分からなかったです。
サルには分かるけど、初心者はすぐには覚えられないのでご安心を。。笑
最近、「一週間ででマスター出来る◯◯」みたいな本たくさん出版されてますが、
そんなの不可能ですよね〜って毎回思ってます。笑
herokuにデプロイする際はgitを使用するので、フォルダをgitと紐付けます。
$git init
変更しコミットします。
$git add -A $git commit -m "first commit"
herokuをインストール
続いてherokuのインストールを行います。
macの場合はコマンド上で以下のように実行します。
brew install heroku/brew/heroku
windoesの方はherokuのサイトからインストールすることが出来ます。
PCにherokuをインストールしたら、herokuにログインをします。
コマンド上でheroku loginを実行します。
$heroku login
私の場合は、heroku login実行後、下の画像のようにherokuのログイン画面に自動的に遷移し、
ログイン出来ました。
画面が遷移しない方は、herokuに登録した際に設定したメールアドレスとパスワードを入力してください。
Enter your Heroku credentials: Email: *******@gmail.com Password: **********
続いてherokuに登録するアプリ名の設定を行います。
アプリ名を設定しなくても自動生成してくれるので、問題ありません。
$heroku create アプリ名
heroku createを実行したらいよいよherokuにデプロイします。
$git push heroku master
最後に本番環境でマイグレーションを実行します。
$heroku run rails db:migrate
マイグレーションが完了すれば、herokuへのデプロイは完了です。
herokuにデプロイする際の発生したエラーについてはまた別記事で載せたいと思います。
herokuへのデプロイは比較的簡単に出来ます。
デプロイする際は、development環境,test環境,production環境それぞれに対応した設定を行う必要があるので、
それぞれの環境の役割と流れの理解が深まります。また、デプロイすることによって作成したアプリを成果物としてURLを
企業の方などに提示することが出来ます。
是非、railsアプリを作成された方はherokuへのデプロイを試してみてください。
・参考サイト
もし、よければ以下の記事もご覧になってみてください。