2012年5月20日日曜日

sinatra (9) - heroku -

(8)の続き。
今回はherokuに作成したアプリケーションをデプロイします。

公式ではHeroku Toolbeltを使用していますが、これだとOS標準のRubyパッケージもインストールされます。
すでにRubyはrvmでインストールしているので、ここでは従来のgemのherokuをインストールします。 こちらにもあるように、gemパッケージはこれまでどおり提供し続け、Heroku ToolbeltはPythonやJavaなど他言語を使用する方へ向けてのことです。
$ gem install heroku
SSH鍵を生成して登録します。
$ ssh-keygen -t rsa
$ heroku kyes:add
認証が通るか確認してみましょう。Authentication successful.と表示されればOKです。
$ heroku login
hreokuの起動に必要なファイルを編集していきます。
.
├── config
│     ├── mongoid.yml
│     └── unicorn.rb
├── config.ru
├── .gitignore  # 追加
├── Gemfile
├── Gemfile.lock
├── Guardfile
├── lib
│     ├── app.rb
│     └── models.rb
├── Procfile  # 追加
├── public
├── spec
│     ├── app_spec.rb
│     └── spec_helper.rb
└── views
       ├── index.slim
       ├── layout.slim
       └── style.scss
$ gem install foreman

Procfile

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
$ foreman start
まずはこれで正しく起動できて、ブラウザから期待する表示ができているか確認してみます。
gitリポジトリを生成します。
$ git init
$ heroku create --stack cedar
通常だと、このあとファイルを追加するのですがherokuのMongoHQを使用するためにもうひと手間かけます。
$ heroku addons:add mongohq:free
各所で書かれていますが、My AccountのBilling Infoを登録しておかないとフリー版であっても使用することができません。

Procfile

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb -E production

mongoid.yml

development:
  host: localhost
  database: mydb
production:
  uri: <%= ENV['MONGOHQ_URL'] %>
ローカルでproduction環境を確認したいときは、環境変数にMONGOHQ_URL='mongodb://localhost/mydb'などと設定すればよいです。

.gitignore

coverage
.sass-cache
$ git add .
$ git commit -m "init"
$ git push heroku master
正しく起動するとデプロイ先のURLが表示されるので、ブラウザでアクセスしてみましょう。
この時点でMongoHQのドキュメントは空なので、HerokuのMy App - Resources - Add-onsからMongoHQに適当なデータを入れると、MongoDBの部分も動作を確認することができます。
テストでアップロードしたサーバをそのまま放置しておくのも何なので
$ heroku maintenance:on
などとして、使わないときはメンテナンスモードにしておくのも手でしょう。

0 件のコメント:

コメントを投稿