beta

HerokuでRuby Sinatra WEBアプリを5分で公開する

HerokuでRuby Sinatra WEBアプリを公開する方法をまとめました。とりあえず「hello world!」を表示するだけのWEBアプリですが、5分以内に公開までいけるようにしてみました。

公開日:2018年8月30日

ファイル構成

  • Gemfile
  • Gemfile.lock
  • Procfile
  • app.rb
  • config.ru

app.rbに基本的な機能を書いて、config.ruからapp.rbを呼び出して動かす、よくある構成です。

Gemfile & Gemfile.lock (Ruby Gemを管理する)

source "https://rubygems.org"

gem "sinatra"

bundle initして個別に作成てもOKです。

ファイルを作成したら、「bundle install」でインストールします。

プロジェクトディレクトリにパスを引かなくても、デプロイする時にheroku側でbundle installしてくれるのですが、Gemfile.lockとの整合性が取れないとエラーでデプロイができなくなるようです。

というわけで、変更を加えた際も、Gemfile.lockを作成するためにbundle installはかけます。

Procfile (herokuのWeb Dynoを設定する)

HerokuではWeb Dynoというプロセスを消費する形式になっていて、それを設定するのがProcfileです。

こちらにbundle execを記述しておくことで、config.ru経由でsinatraアプリを呼び出してくれます。

web: bundle exec rackup config.ru -p $PORT

config.ru (SinatraをRackアプリとして立ち上げる)

Sinatraビルトインサーバーではなく、Rackアプリとして起動させます。

require './app.rb'

run Sinatra::Application

app.rb (Sinatraアプリ本体)

ようやくSinatraアプリ本体にたどり着きました。

ここからは逆に簡単で、サクッとテンプレの通りにHello Worldを表示させます。

require 'bundler/setup'
require 'sinatra'

get '/' do
  'hello world!'
end

デプロイ

ここまでくればあとはデプロイするだけです。ローカル環境でテストするべきなのですが、とりあえず公開するだけなのでいきなりデプロイします。

git add .
git commit -m "first commit"
git push heroku master

確認

デプロイでエラーが出なかったら、「https://アプリ名.herokuapp.com/」にアクセスすれば「hello world!」とだけ表示されているはずです。

: