Update: Expanded Troubleshooting section to include the most common RVM error.
Update 2: Changed certain sections for Pow 0.4.0.
Update 3: Updated
.powrc to support
.ruby-version in newer RVM versions
Recently, I came across this wonderful Ruby web development tool called Pow.
Pow is a zero-config Rack server for Mac OS X.
It is so awesome. To have your Rack app setup, just add a symlink to
~/.pow and it’ll be available at
myapp is the name of the symlink you have used.
It is super easy to install, but there are some catches if your setup falls into one of the following:-
- You use RVM to manage your Ruby installations.
- You want system Apache to continue functioning. (By default, Pow takes over port 80.)
With reference to the “Running Pow with Apache” wiki article, here are some changes that I made to with respect to the instructions listed in the wiki page.
Configure Pow (before installation)
Here’s how my
export POW_TIMEOUT=120 export POW_WORKERS=1 export POW_DST_PORT=8300 export POW_RVM_PATH="/usr/local/rvm/scripts/rvm"
I prefer to use port 8300, but you can use port 88 as suggested in the wiki page.
Also, ensure that your
POW_RVM_PATH variable points to the correct location—it defaults to
If you already have pow installed, uninstall it first:
curl get.pow.cx/uninstall.sh | sh
Then, install pow:
curl get.pow.cx | sh
Add the following file into
<VirtualHost *:80> ServerName pow ServerAlias *.dev *.xip.io <Proxy *> Order allow,deny Allow from all </Proxy> ProxyRequests Off ProxyPass / http://localhost:20559/ ProxyPassReverse / http://localhost:20559/ ProxyPreserveHost On </VirtualHost>
This tells Apache to proxy all requests for
*.dev to pow running at
localhost:20559. The file starts with
zzz- as this will ensure that this configuration snippet is included into apache last.
Restart/Start apache for it to take effect:
$ sudo apachectl restart
Due to some changes in newer versions of RVM, Pow is no longer able to automatically configure itself for RVM. You’ll need to have a
.powrc (commit this file into VCS) within your app directory to have RVM kick in (updated to support
.ruby-version in newer RVM versions):
if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ] ; then source "$rvm_path/scripts/rvm" source ".rvmrc" elif [ -f "$rvm_path/scripts/rvm" ] && [ -f ".ruby-version" ] && [ -f ".ruby-gemset" ] ; then source "$rvm_path/scripts/rvm" rvm use `cat .ruby-version`@`cat .ruby-gemset` elif [ -f "$rvm_path/scripts/rvm" ] && [ -f ".ruby-version" ] ; then source "$rvm_path/scripts/rvm" rvm use `cat .ruby-version` fi
Once done, your rack applications will coexist with your current Apache setup peacefully.
There’s a very common Pow/RVM error:
LoadError: cannot load such file -- bundler/setup […]
The solution is simple, ensure that you have a
.powrc file as per the RVM section above within the project directory. RVM support in Pow has been removed or depreciated and now made external.