pow + rbenvで手軽なRack環境構築
MacOSXでRack環境をlocalに手軽に準備するものとして pow
があるのですが、これを brew
で構築する方法を紹介します。
インストール
node.js
とnpm
がインストールされてない場合は別途必要となります。まだ入れてない場合には brew
経由の場合には以下のようにすることでインストール出来ます。
$ brew install nodejs
$ export NODE_PATH=/usr/local/lib/node_modules
$ curl http://npmjs.org/install.sh | sh
NODE_PATH を .bashrc などに追加しておくことを忘れないようにしてください。
そしてpowのインストールもbrewを使うのであれば手軽に実行出来ます。5ステップで終わります。また brew install pow
以降のステップは brew info pow
で確認出来ます。
$ brew install pow
$ sudo pow --install-system
$ pow --install-local
$ sudo launchctl load -w /Library/LaunchDaemons/cx.pow.firewall.plist
$ launchctl load -w ~/Library/LaunchAgents/cx.pow.powd.plist
環境設定
(2012/07/30 追記はじめ)
MoutainLionでインストールをしたところ、POW_HOST_ROOT
が作成されないようですので、以下のステップが必要になりました。
$ eval $(pow --print-config)
$ mkdir "`echo $POW_HOST_ROOT`"
(2012/07/30 追記おわり)
brew
経由だと ~/.pow
が作成されないので、別途作成する必要がありますが、以下の2ステップで終わります。(2012/07/20時点)
$ eval $(pow --print-config)
$ ln -s "`echo $POW_HOST_ROOT`" ~/.pow
インストール確認
以下のコマンドで {"pid":20226,"version":"0.4.0","requestCount":3}
のような表示が出ることを確認してください。表示されれば正常に動作しています。
エラーが出る場合は web共有がonになってないかチェックしてください。
$ curl -H Host:pow http://localhost/status.json
(2012/07/30 追記はじめ)
MoutainLionでインストールをしたところ、上記コマンドが Empty reply from server
とエラーを返すようになりました。現時点で対策は分かりません。その代わり次のコマンドで /System/Library/CoreServices/powerd.bundle/powerd
が表示されることを確認してください。
$ ps ax|grep -i pow
(2012/07/30 追記おわり)
動かし方
以下の2ステップです。
$ cd ~/.pow
$ ln -s /path/to/rackapp
これでRackアプリの最後のPath名が例えば rackapp
であるならば、 http://racpapp.dev
でアクセス出来るようになります。
$ open http://rackapp.dev
rbenvとの連携について
特に必要なく動かせますが、 もし動作しないようならrbenvが動作している環境で
$ echo "export PATH=$PATH" >> ~/.powconfig
とすることで解決出来るかもしれません。
また、 rbenv local 1.9.3-p194
等とすることで、そのディレクトリ以下では指定したバージョンが動作するようです。
3rd party tools
次に pow
を便利に利用するために Powder
をインストールします。似たツールに Powify
や Showoff
などもありますが、お好きなものを選んでください。
ここでは powder
を紹介します。
$ gem install powder
$ rbenv rehash
これらのツールを利用することで、インターネットコネクションが無い場合にはDNSにつながらないなどの理由で接続に失敗しする場合などに、/etc/hosts
に pow
で利用するホスト名を更新することで回避出来るのですが、これを手軽に利用することができます。
powder
では以下のコマンドで行えます。
$ powder host # /etc/hosts に powで利用するホスト名を追加
$ powder unhost # /etc/hosts に powで利用するホスト名を削除
pow
の一覧は以下で確認出来ます。
$ powder list
他、powのプロセスを再起動する場合には以下で行えます。
$ sudo powder respawn
以下のコマンドでは Rack環境下でのみ実行できますが、それぞれステータス、Rack再起動、ログ表示が行えます。他にも便利な機能があるのでヘルプを見てください
(ただし、powderコマンドによるpowのインストール、アンインストールなどはbrew経由では無いので実施はしない方が良いと思われます)
$ powder status
$ powder restart
$ powder applog
Q&A(らしきもの)
Q. 何が嬉しいの?
A. ブラウザで独自ドメイン(デフォルトでは.dev
)で見れるようになりcookieなどもRackアプリごとに分ける必要が無くなります。
Q. メモリたくさん使うのでは?
A. アクセスしてから暫くの間のみプロセスが起動する事から影響は軽微だと思われます。
Q. トップレベルドメインは .dev
固定?
A. 例えば.test
を使いたい場合には .powconfig
に export POW_DOMAINS=test
として、powder respawn
でpow
の再起動を行い、もし /etc/resolver
以下にファイルが有る場合はその名前をtest
にリネーム。また/ets/hosts
にpow
のホスト名が存在している場合には powder host
で/etc/hosts
を更新をすることで対応可能です。
Q. 手軽?
A. たぶん手軽です。