概要
Sinatra で作成したアプリを Rack で動くようにして Heroku 上でも動作するようにしてみました
簡単にできたので紹介します
サンプルとして紹介するアプリはこちらです
環境
- CentOS 6.6 64bit
- Ruby 2.2.0p61
- Sinatra 1.4.6
- Rack 1.6.1
- Heroku Toolbelt 3.39.1
Sinatra アプリの作成
何でもOKです
この辺を参考にすればあっさり作成できると思います
ruby app.rb
で起動してポート4567でLISTENするアプリを作成できればOKです
Sinatra アプリを Rack で動作させる
config.ru の作成
config.ru
はrackup
という Rack のコマンドでアプリを起動させるために必要な起動ファイルです
以下のような感じで記載してください
require 'bundler'
Bundler.require
require './app'
run Sinatra::Application
require
している./app
の部分は作成した Sinatra アプリのファイル名を指定してください
これを作成したらrackup
コマンドでアプリを起動できるようになります
rackup config.ru
で起動できるはずです
またサンプルはbundler
でも動作するようになっています
bundler で動作させる場合はbundle exec rackup config.ru
で起動できます
heroku へのデプロイ
herokuへのサービス登録は済ませておいてください
heroku-toolbeltのインストールがまだの場合は https://toolbelt.heroku.com/ を参考にインストールしてください
heroku-toolbeltがインストールできたらデプロイしていきます
デプロイは簡単です
作成した Rack アプリのディレクトリに移動して heroku にログインして push すればOKです
heroku login
heroku create
git push -u heroku master
とするだけでOKです
ログインは済んでいる場合は実行不要です
すでに登録済みのアプリに対してデプロイしたい場合はheroku create
の代わりにgit remote add heroku https://git.heroku.com/APPNAME.git
として heroku 上の git リポジトリを remote として追加します
APPNAME
の部分は既存のアプリ名を指定してください
heroku list
で既存アプリ一覧を確認することができます
これで push に成功すれば rack アプリがデプロイされます
動作確認
push するとURLがターミナルに表示されると思うのでそこにアクセスしましょう
Mac等の環境でブラウザが使えるのであればheroku open
でもOKです
サンプルを使っているのならばリクエスト情報をJsonでダンプしてくれるはずです
最後に
ポイントは config.ru で動作させるようにすることでした
Sinatra アプリとして動作する状況で push してもうまく動作しませんでした
heroku はどういうアプリなのかを自動で判断してアプリを起動します
Sinatra アプリの場合はそのままだと動作せず Rack アプリにすると動作するという話でした
0 件のコメント:
コメントを投稿