herokuことはじめ(ruby+sinatra)

herokuの開発にはruby+git+opensshがきっちり動く環境が必要なので、そのあたりの整備を兼ねて一番簡単?なruby+sinatraの場合からはじめる。
Windows7(64bit)+Cygwinを使う記録。
cygwinの替わりにmsysgitを使ってもできると思うがrubyのネイティブモジュール(eventmachine)をインストールするところで頓挫してしまった。LinuxとかOSX使えばもっと簡単。

cygwin導入

http://www.cygwin.com/
から
setup.exe
をダウンロード。
ruby, gcc4(rubyのnative moduleビルド), git, openssh
をインストールする。

cygwin rebase

forkしたときに死ぬ問題があるので予め修正しておく
dosプロンプト

> C:\cygwin\bin
> ash
$ /bin/rebaseall

gem導入

http://rubyforge.org/frs/?group_id=126
から
rubygems-1.8.11.tgz
を入手した。

$ tar xzf rubygems-1.8.11.tgz
$ cd rubygems-1.8.11
$ ruby setup.rb
RubyGems 1.8.11 installed

== 1.8.11 / 2011-10-03

* Bug fix:
  * Deprecate was moved to Gem::Deprecate to stop polluting the top-level
    namespace.


------------------------------------------------------------------------------

RubyGems installed the following executables:
        /usr/bin/gem

$ gem --version
1.8.11

以降の手順

http://devcenter.heroku.com/articles/ruby
をベース

herokuコマンドをインストールする

> gem install heroku

herokuアカウントを作る

http://www.heroku.com/
作った

ssh鍵作成

$ ssh-keygen

~/.ssh/id_rsaを作成

鍵登録

$ heroku login
Enter your Heroku credentials.
Email: ousttrue@gmail.com
Password:
$ heroku keys:add

さっきの~/.ssh/id_rsaを登録した

ruby+sinatraを作る

> gem install sinatra
> mkdir hello
> cd hello

web.rb

require 'sinatra'

get '/' do
  "Hello, world"
end

動作確認

> ruby -r rubygems web.rb
[2011-11-26 23:28:52] INFO  WEBrick 1.3.1
[2011-11-26 23:28:52] INFO  ruby 1.8.7 (2008-08-11) [i386-cygwin]
== Sinatra/1.3.1 has taken the stage on 4567 for development with backup from WEBrick

http://localhost:4567で確認する。

C-cで止める

依存ライブラリ管理

sinatraをherokuで利用するのに必要

bundlerをインストール(ここでgccが必要)

$ gem install bundler

Gemfile

source :rubygems
gem 'sinatra', '1.1.0'
gem 'thin', '1.2.7'
$ bundle install

bundlerを使わずに.gmes(マニフェストと言うらしい)を
使う方法もあるみたい。

foreman

ローカルテスト

$ gem install foreman

Procfile

web: bundle exec ruby web.rb -p $PORT
$ foreman start

http://localhost:5000で確認する。

C-cで止める

gitに登録

$ git init
$ git add .
$ git commit -m "init"

herokuアプリ作成

$ heroku create --stack cedar

herokuにデプロイ

$ git push heroku master

ブラウザでアクセス

$ heroku open

以上でsinatra編終わり。