
Pow是一个神奇的东西,原先你需要跑一个服务器应用,你可能需要在命令行下面执行一个命令,以及你自己需要时刻监控到这个程序的运行。但是有了POW,你需要做的事情只是做一个ln软链接就可以了。对了,它只能在OSX下面使用。
安装:
1
 |  | 
删除:
1
 |  | 
如果你需要设置一个基于Rack的应用,你需要做的是:
1 2  |  | 
就是这么简单。
原理
- Pow把目录当做Rack应用来执行,目录主要含有
config.ru配置文件和public静态文件目录。 - 在访问到目录的时候,它自动创建一个worker,最多每个应用2个worker,15分钟没有请求后自动回收。
 
一些特性整理
- 链接到
~/.pow里面的目录比如myapp会映射到http://myapp.dev/。 www.myapp.dev这种子域名都会映射到myapp.dev,除非你重新创建一个www.myapp目录。~/pow多个软链接到同一个目录,只会生成一个worker。- 如果没有
myapp,访问myapp.dev会给出提示。 - Pow支持端口转发功能,只要
echo 8080 > ~/.pow/proxiedapp,访问proxiedapp.dev就是访问本地端口8080。 - Pow支持只含有
public目录,直接serve静态文件。 - 重新启动服务:
touch tmp/restart.txt,或者直接杀掉进程就好了。会重新加载环境。 - 每次访问都重启服务:生成这个文件:
tmp/always_restart.txt。但是它不会重新加载环境。 - log放在
~/Library/Logs/Pow里面。 - 重启Pow:
touch ~/.pow/restart.txt 
设置
Pow启动前会去执行目录下.powrc和.powenv这2个脚本。
如何设定ruby版本?
- 用rbenv: 
rbenv local 1.9.3-p194 - 用rvm,添加.rvmrc:
rvm 1.8.7因为rvm需要加载环境变量,你需要修改上面的2个脚本之一:sh if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ]; then source "$rvm_path/scripts/rvm" source ".rvmrc" fi - 或者直接设置
PATH就好了。 
FAQ
手动设置软链接太烦了,有什么方便的方法?
有的。 gem install powder,cd到你应用的目录,然后执行:
powder link
文档在这里。
如何让局域网的其他人访问到这个服务?
用xip.io,它是一个把网络地址转换到具体IP的服务,方便进行一些调试。
比如你的ip是10.0.0.2,用Pow跑的服务是app,那么同一个局域网的人就可以用app.10.0.0.2.xip.io来访问你的服务。
如何让外网的其他人访问到这个服务?
用forward。
资料