結論
以下のファイルを用意する。
- Gemfile
- Gemfile.lock
- Procfile
- config.ru
- public/index.html
それぞれのファイルについて、説明します。
Gemfile
Webサーバ用に rack
を入れます。
gem "rack"
Gemfile.lock
Gemfile
を作ったあとに $ bundle install --path vendor/bundle
をすることで自動的に生成されます。これがないと Heroku に Push したときに怒られます。
Procfile
Webサーバ を起動するために rackup
の記述を行います。web:
という Process Type は Heroku での予約語です。ポート番号と bind も書いておかないと外から接続できないことがありました。bind についてはさらに、指定していない場合はローカルで起動した場合に接続できないあるあるです*1。
web: bundle exec rackup -p $PORT -o 0.0.0.0
config.ru
ルーティングを書きましょう。以下の書き方では、「public/
配下が静的ファイルの置き場になり」、「ファイル名が指定されていない場合は index.html
を見に行く」という設定になります。
use Rack::Static, urls: [''], root: 'public', index: 'index.html' run lambda {|env|}
public/index.html
静的ファイルを public/
配下に置きましょう。index.html
を置いてそれが表示されれば正しくデプロイできていることになります。
備考
いや、普通に GitHub Pages とか Sinatra
とか使えよって話なんですがね……。
*1:Sinatra でも同様