RubyFlow The Ruby and Rails community linklog

Pow! A Zero-Config Rack Server for OS X

From 37signals comes an interesting new Ruby project: POW!! It’s a “zero-config Rack server for Mac OS X” by Sam Stephenson and it allows you to “knock out Rails & Rack apps like a superhero.” Pretty bodacious stuff and people have been raving about it over Twitter and Hacker News all day.

Comments

Pow is very cool, both from the simplicity perspective AND how they went about implementing it.

For one, they’ve written the server using Node (and the install downloads a bundled version of the node executable) and pow itself is written in coffee-script. From the perspective of avoid issues with most current servers (e.g. passenger where you’re limited to 1 ruby at a time, and mongrel / thin / unicorn where you’re managing on a per-app basis), the Pow approach is quite cool.

In particular, the way they’ve implemented rvmrc support means it’s trivial to develop against apps in a passenger-style workflow (touch tmp/restart.txt to restart, hit the url to start it) whilst working with multiple rubies simultaneously. Whilst I love Passenger (and Passenger stand alone), passenger stand alone isn’t an ideal solution (it’s simple, just not quite at simple imho).

Also, using firewall rules to to handle the apps automatically is pretty neat, although it’d be cool if the app offered the option to setup the default vhost in apache as a reverse proxy as an alternative (although that’d mean your requests going through 3 levels not 2).

While I like the idea, I’m not sure why node.js is needed for that. How about using MacRuby or Ruby 1.9 for that? I usually try to avoid using dozens of different tools/languages when possible as complexity == bugs.

Using JavaScript, node.js and CoffeeScript just to launch some Rack apps locally seems to be a huge overkill for me.

This is awesome!

@Roland I’m not afraid of node.js. The code is is very straightforward, and it well suits for the job. I believe Pow is superior to Passenger in development: Pow supports multiple ruby environments, while Passenger doesn’t. Anyways, Passenger builds Nginx, while we get this functionality out of the box with Pow.

Make no mistake, Nginx is a great server, I use it in production. However, I think building nginx every now and then, and building passenger interface just on server start is just another overkill.

Now I understand why @dhh says a MacBook Air is good enough for rails development.

@Sutto I have used Passenger Preferences for quite a while, which does what you want from Pow, but it was not comfortable for me: I always wanted to edit httpd.conf directly, because I completely forgot I have this tool installed :)

A MacBook Air has always been good enough for many programming development even with this POW example.

Post a comment

You can use basic HTML markup (e.g. <a>) or Markdown.

As you are not logged in, you will be
directed via GitHub to signup or sign in