Ruby(Sinatra)アプリをHerokuで運営する
今回はRuby(Sinatra)のコードをHerokuでWebアプリにする。
コードは前に書いたものを使う。
ちなみにローイングファンもHerokuで運営している。
ローイングファン
https://rowingfan.herokuapp.com
目次
- Herokuとは
- SinatraアプリをHerokuで運営するために必要なファイル
- Herokuでアプリを運営する手順
- 開発ディレクトリ内にGitリポジトリをつくる
- アプリファイルをつくる
- config.ruファイルをつくる
- Herokuのアカウントを取得する
- The Heroku CLIをインストールする
- Heroku上にアプリを開設する
- Heroku Postgresを設定する
- 諸々のファイルをGitプッシュする
- 今回の実行環境
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箇所を変更する。
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
これでアプリが公開され運営が開始(デプロイ)される。