herokuにRails3.2.1を入れてみる

 この間暇つぶしというか、勉強にと思ってナンプレ解決器を作ったんですよ。
 でもライブラリを作るだけ作って、インターフェイスコマンドラインだったので
どうも釈然としないというか、未完成というか、中途半端感が否めません。

 前々から「長いこと弄ってないからRailsで遊びたいなー」なんて考えていて、
ぱっと思い出したのがherokuの存在。
 「無料でRailsAppをホスティングしてくれるよ!」っていうのは知っていたんですが、
いかんせん対応しているのが(以前は)2.x系列だったので視野に入っていなかったんですね。

 それでふともう一度調べてみたら、なんか3.xに対応してるー!?
 ということで、チャレンジ精神をもってherokuにRails3.2.1を入れてみることになりました。
 これでナンプレ解決器のインターフェイスがちょっとはマシになるかも?
 ただ、3.2系が無事に動くかどうか……。


1. RailsInstallerをインストールする
 僕の環境は(本当はUbuntuがいいんだけど)WindowsXPなので、
Railsを手軽に手元に置いておくためにhttp://railsinstaller.org/からRailsInstallerを持ってきます。

 一気にこれだけインスコしてくれますが、Railsのバージョンが3.1.1なので、
Command Prompt with Ruby and Rails を起動し、

> bundle install rails

 としてRails最新版である3.2.1(2012年2月28日現在)にアップデートしておきます。
 既にローカルでRails開発できるので、rails new してから rails server すればデフォルトのindex.htmlが出てきます。
 また、確かここでsshの公開鍵も作ってくれたはずなので、次のherokuクライアントとgitで使用します。

2. herokuアカウントを作る
 簡単に登録して、もちろんアカウント持ってる人は登録しなくても良くて、
 Windows(or Mac OS X, Ubuntu, gemもあるっぽい)用のクライアントをダウンロードしてインスコするだけ。
 パスが通っているので

> heroku -h

 とするとコマンド一覧が出ます。まだ全部把握してないです。

3. herokuにファイルを送りつける
 http://devcenter.heroku.com/articles/rails3の指示通りに作業を進めていきます。
 注意すべきは herokuではsqlite3が使えない ことで、Gemfileを

# gem 'sqlite3'
gem 'pg'

 と編集しておかないと、herokuにpushした時点でエラーが出て続行できません。
 ドキュメントをよく読まないとハマるいい例です。僕はハマりました。
 この時点でGemfile.lockがgitリポジトリに入ってしまっているので、Gemfileを編集してから

> bundle install
> bundle update
> git add .
> git commit
> git push heroku master

 としなければなりません。多分。試してないからわからんちん。
 そしてこのコマンドで、heroku側でgemのインストールなんかを自動的にしてくれます。スバらしいです。

4. herokuのサイトを開く
 既に送りつけたRailsアプリケーションが稼働している……ハズですが、
本当に動いているのか謎なので確認します。

> heroku ps

 これで稼働しているプロセスが表示されます。
 herokuでは rails server でサーバを動かすっぽい? ので、現在WEBrickが稼働していることになりますね。

> heroku logs

 でより詳細な情報を知ることができます。

 それぞれの結果がよさげなら、

> heroku open

 と打ち込むと、先程送りつけたRailsアプリケーションのページをブラウザで開いてくれます。
 デフォルトのindex.htmlが表示されました?
 もしそうなら、手を入れていない Rails3.2.1 がheroku上で動いているというわけですね。
About your application’s environmentというリンクが動作しないのは、
 データベース設定をしないままproduction環境で動かしているから……だと思いたいです)

5. これからの課題
 さて、WEBrickで動かしているというのはちょっと動作速度に大分不安があります。
 他にも新たなgem、例えばRSpec2やGuard、hamlなんかも入れてみたいところ。
 それに、本当に3.2.1で動くのか……というのは、僕ではちょっと力不足なんですが、
問題に直面したときはできるだけぐーぐりんぐしつつ頑張って解決していきたいです。

 というわけで次回はBDDに必要ないろいろなgemをインストールするのと、
余裕があればサーバ環境の整備なんかをしていきますね。

参考: 今回のgithubリポジトリrails newそのままだけど) https://github.com/sandmark/SudokuSolver
https://github.com/sandmark/NumberPlaceSolver