2011年4月8日金曜日

OS Xでpowを使ってみる

今回も、MeSHから離れた話題です。

powとは何か?

平たく言うと、Mac OS X上で動作する、Rackサーバです。Rackとは何かと言うと、ruby言語を利用して作成したアプリケーションとWebサーバとのインタフェース統一するためのライブラリです。SinatraもRailsも、Rackを介して動作するようになっています。powは、Rackの仕組みに沿って開発されたプログラムを、お手軽に試す際に有効です。

例えば、Webアプリケーションを試しに作ってみようとして、ホワーンとアイディアが浮かんでいる段階を想像してください。Railsなら、とりあえずプロジェクトを作成して、DBの構造を決めて、scaffoldして・・・mongrelなどを動かして、Webブラウザから確認するという流れになります。Sinatraだと、DBにテーブルを作って、app.rbを作って、mongrelなどを動かして、Webブラウザから確認するという流れになります。もう少し開発が進むと、Passengerなどを使ってApacheと連携するフェーズに進みます。このとき、動作ディレクトリを設定ファイルに登録するのが面倒になります。小規模なプロジェクトだと、ディレクトリまるごとコピーして新旧の動作を比較したいとか、別ディレクトリのプロジェクトと同時進行するなどの場合、いちいち設定ファイルを書き換えるのが嫌になります。このようなときに、Webアプリケーションを簡単に公開するための仕組みがpowです。

powの設定

powはpow.cxで公開されています。最初、ダウンロードのリンクが見つからなくて右往左往したのは秘密です。powのインストールは、以下のコマンドを実行するだけです。
$ curl get.pow.cx | sh
これだけで、様々な設定が行われ、ホームディレクトリに「.pow」というディレクトリが作られます。次に、RailsやSinatraなどで作成したRackアプリケーションのディレクトリのシンボリックリンクを作成します。例えば「/Users/admin/sinatra/test」というディレクトリであれば、
$ cd ~/.pow
$ ln -s /Users/admin/sinatra/test
と入力してください。これで~/.pow/testが作成されます。以上で設定は終了です。後は、Webブラウザを起動して、「http://<作成したシンボリック名>.dev/」にアクセスすればアプリケーションを利用できます。

実際に試してみる

それでは実際にサンプルプログラムを用いて説明していきます。事前に用意するものは、SinatraとRackです。いずれもgemコマンドでインストールできます。
$ gem install rack
$ gem install sinatra
次に、Sinatraを使った簡単なサンプル「app.rb」と、そのプログラムをRackから呼び出すための設定ファイル「config.ru」を作ります。


いずれも、「/Users/admin/sinatra/test」ディレクトリに作成してください。

後は、Webブラウザから「http://test.dev/」にアクセスすると、ブラウザ上に「Hello, world」の文字が表示されると思います。

app.rbを書き換えた場合は、powの再起動が必要となります。「/Users/admin/sinatra/test」直下に「tmp」ディレクトリを作成し、
$ touch tmp/restart.txt
を実行してください。powは、tmp/restart.txtのタイムスタンプを見て、自身を再起動するかどうか決定します。

うーん、シンプル。Mac OS Xを使っていて、RailsやSinatraを使っている人はpowも使ってみてください。数は少ないですが、日本語の記事も出てきています。
Node.js+CoffeeScriptで書かれた「Pow」がカッコ良すぎる件 | Rails Hub情報局
powを使ってdevelopment環境で複数のrailsアプリを同時に動かす | YomuKaku Memo このエントリーをはてなブックマークに追加