ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

Ruby(Sinatra)アプリをHerokuで運営する

今回はRuby(Sinatra)のコードをHerokuでWebアプリにする。
コードは前に書いたものを使う。

ちなみにローイングファンもHerokuで運営している。
ローイングファン
https://rowingfan.herokuapp.com

目次


Herokuとは

Heroku(ヘロク)はPaaS(パース、Platform as a Service)。
PaaSとはWebアプリを動かすための設定がなされたレンタルサーバ
Webアプリを運営するときに使うサービス。

PaaSを使えばサーバ設定の手間がへるのでWebアプリの運営が容易になる。
Herokuの場合はGitプッシュでアプリを簡単にデプロイできる。
Herokuには無料のコースがある。PostgreSQL(Heroku Postgres)も無料で使える。

HerokuのWebサイト
https://jp.heroku.com/
クラウド・アプリケーション・プラットフォーム | Heroku

SinatraアプリをHerokuで運営するために必要なファイル

Ruby(Sinatra)アプリをHerokuで運営するには次のファイルが必要。

  • アプリファイル
  • Gemfile、Gemfile.lockファイル
  • config.ruファイル


今回のディレクトリ/ファイルの構造は次のとおり。
sinatra_appディレクト

sinatra_app
    |- Gemfile
    |- Gemfile.lock
    |- vendor
        |- bundle
    |- .bundle
    |- .env #ローカル環境のみで使用
    |- .git
    |- .gitignore
    |- myapp.rb
    |- views
        |- index.erb
    |- config.ru

# 静的ファイル(CSSファイルなど)が必要な場合はpublicディレクトリを作成する
    |- public
        |- CSSファイルなど


Herokuでアプリを運営する手順

  • 開発ディレクトリ内にGitリポジトリをつくる
  • アプリファイルをつくる
    • Gemfile、Gemfile.lockをつくる
  • config.ruファイルをつくる
  • Herokuのアカウントを取得する
  • The Heroku CLIをインストールする
  • Heroku上にアプリを開設する
  • Heroku Postgresを設定する
  • 諸々のファイルをGitプッシュする


開発ディレクトリ内にGitリポジトリをつくる

Gitリポジトリをつくる

開発用ディレクトリをGitで管理する。
Git管理を開始するには開発用のディレクトリに移動して'git init'コマンドを入力する。

cd sinatra_app
git init


.gitignoreファイルをつくる

テキストエディタ.gitignoreという名前のファイルをつくる。
.gitignoreファイルにはバージョン管理する必要のないものや秘密にしておきたい情報が書かれたファイルなどを記載する。
記載することでGitリポジトリにコミットされなくなる。
今回記載する内容は次のとおり。

.gitignore

.bundle
vendor/bundle
.env
.DS_Store
logfile


アプリファイルをつくる

今回は前に書いたコードを使う。
Herokuで運営するにあたり次の2箇所を変更する。

  • データベースに接続するための環境変数をHeroku用に変更する
  • sinatra/reloaderを削除する


Active Recordのモデルを次のように変更する。
myapp.rb

#環境変数を DATABASE_URL に変更する
class Test < ActiveRecord::Base
    establish_connection(ENV['DATABASE_URL'])
end


Heroku Postgresではパスワードなどすべての接続情報がDATABASE_URLという変数に代入されるので上のコードで接続できる。

sinatra/reloaderの削除
myapp.rb

#sinatra/reloaderは不要なので削除またはコメントアウトする
#require 'sinatra/reloader'


config.ruファイルをつくる

config.ruファイルはRubyファイルがSinatraアプリということをHerokuにおしえるためのファイル。
今回の内容は次のとおり。

config.ru

require './myapp.rb'

run Sinatra::Application


myapp.rbのところは自分のファイル名に書きかえる。

Herokuのアカウントを取得する

HerokuのWebサイトからアカウントを取得する。

The Heroku CLIをインストールする

The Heroku CLIをインストールしてターミナルからHerokuを操作できるようにする。
The Heroku CLIのドキュメントは次のとおり。
Heroku Dev Center(https://devcenter.heroku.com/) > The Heroku CLI

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

Heroku上にアプリを開設する

Heroku上にアプリを開設する。
今回はターミナルからHerokuコマンドでHerokuアプリをつくる。
手順は次のとおり。
開発用のディレクトリに移動する。

cd sinatra_app


移動したらHerokuにログインする。

heroku login


ログインするにはメールアドレスとパスワードを求められる。
ログインしたらアプリをつくる。書式は次のとおり。

heroku create アプリ名


これでHerokuアプリがつくられる。つくられる際、自動で開発用ディレクトリのGitリポジトリとHerokuアプリが紐づけられる(リモートリポジトリになる)。

アプリのURLはhttps://アプリ名.herokuapp.comになる。

Herokuの作業を終える場合はHerokuからログアウトする。
ログアウトするコマンドは次のとおり。

heroku logout


Heroku Postgresを設定する

Heroku Postgresの設定

Heroku Postgresはアプリごとにアドオンとして提供されている。
設定はHerokuのWebサイトから行うかターミナルからコマンドで行う。
Heroku PostgresのドキュメントはHeroku Dev Center内にある。
Heroku Dev Center(https://devcenter.heroku.com/) > Heroku Postgres

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

Heroku postgresにレコードを挿入する

Heroku Postgresにレコードを挿入する。
Heroku Postgresのデータベースに接続するコマンドは次のとおり。
接続するにはHerokuにログインしている必要がある。

heroku pg:psql --app アプリ名


データベースに接続できたらSQL文を使ってテーブルをつくる。
テーブルができたらレコードを挿入する。
データベースとの接続を解除するには\qと入力する。

諸々のファイルをGitプッシュする

ファイルの準備ができたらHerokuにGitプッシュする。
最新の状態をローカルリポジトリにコミットしていない場合はコミットする。
コミットする手順は次のとおり。

開発ディレクトリに移動する。

cd sinatra_app


移動したら必要なファイルをステージングエリアに追加する。

git add .


.は今いる場所以下のファイルとディレクトリすべての意味になる。
(.gitignoreに記載されたファイルは管理外になる)

ステージングエリアのファイルをコミットする。

git commit -m "コメント"


ローカルリポジトリにコミットしたらリモートリポジトリ(Heroku)にプッシュする。
(プッシュするにはHerokuにログインしている必要がある)

git push heroku master


これでアプリが公開され運営が開始(デプロイ)される。

今回の実行環境

macOS 10.13.5
ruby 2.5.1p57