概要
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::Applicationrequireしている./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 件のコメント:
コメントを投稿