i see quite a bit of code from zed shaw's mongrel in there[1].. to the extend that i think puma is simply a mongrel that uses threading.
you say it is using ragel; mongrel also uses ragel[2]. mongrel and z.shaw are even mentioned on the ragel project page. (and ragel is mentioned on the mongrel page[3])
sorry but i think puma could be more upfront about being an innovation on top of mongel.
otherwise nice work! code looks indeed very clean compared to unicorn/rainbows and zbattery.
My understanding based on a presentation from Dr. Nic is that Puma is a straight fork of Mongrel since Mongrel had threading from the beginning but it is essentially unsupported now.
IMO, its a step in the right direction to build threaded concurrency into the foundation of a Ruby web server. Events can be layered within those threads. Then you can even have a nice mix of sync / async code on a single web server running harmoniously. Also, if running just a single thread, we're in the same place as most other Ruby web server, but for those VMs that can take advantage of it, and for those stacks that can benefit, its awesome.
I hear you guys in the comments saying events is the way to go for concurrency in Ruby, especially with MRI. As many also know, GIL-less threads are available in modern Ruby VMs like Rubinius and JRuby.
I haven't tried puma yet, but I do believe in evanphx's work.
Puma uses a thread pool to handle requests. The only other Ruby web servers I know of that do this are Rainbows!, and Zbatery, and they're a bit obscure, unfortunately. Unlike Thin, EventMachine is not used.
I have it running on my Heroku instance for a day or so with no issues, though I don't get any traffic yet. :)
This seems like a neat accomplishment, but why would I use it? There is mountains of work for standard configurations including security hardening, monitoring, configuration management, etc.
What about this product makes it better than the other options?
I'm just going to add a shout-out to a friend's project which uses Mongrel2 (Zed Shaw's new awesome application, language, and network architecture agnostic web server).
[+] [-] cies|14 years ago|reply
you say it is using ragel; mongrel also uses ragel[2]. mongrel and z.shaw are even mentioned on the ragel project page. (and ragel is mentioned on the mongrel page[3])
sorry but i think puma could be more upfront about being an innovation on top of mongel.
otherwise nice work! code looks indeed very clean compared to unicorn/rainbows and zbattery.
[1]: https://github.com/evanphx/puma/tree/master/ext/puma_http11 [2]: http://www.complang.org/ragel/ (mentions mongrel) [3]: https://github.com/mongrel/mongrel
[+] [-] ejfinneran|14 years ago|reply
This commit lends to that story as well: https://github.com/evanphx/puma/commit/1888887d8ff8fdf4954c3...
I agree though, would be nice to mention its heritage in the read me.
[+] [-] moe|14 years ago|reply
[+] [-] benporterfield|14 years ago|reply
[+] [-] pkieltyka|14 years ago|reply
I hear you guys in the comments saying events is the way to go for concurrency in Ruby, especially with MRI. As many also know, GIL-less threads are available in modern Ruby VMs like Rubinius and JRuby.
I haven't tried puma yet, but I do believe in evanphx's work.
Also, for those interested in concurrency with Ruby, also check out: https://github.com/tarcieri/celluloid and https://github.com/tarcieri/nio4r .. looks like Tony even has a fork of puma in there too.
[+] [-] mattgreenrocks|14 years ago|reply
I have it running on my Heroku instance for a day or so with no issues, though I don't get any traffic yet. :)
[+] [-] cies|14 years ago|reply
[+] [-] jarito|14 years ago|reply
What about this product makes it better than the other options?
[+] [-] juliennakache|14 years ago|reply
[+] [-] mitchty|14 years ago|reply
https://github.com/evanphx/puma/blob/master/lib/puma/thread_...
[+] [-] andrewvc|14 years ago|reply
I'm not sure if it's considered production ready yet though.
[+] [-] Omni5cience|14 years ago|reply
https://github.com/ArtemTitoulenko/Angstrom
[+] [-] mbq|14 years ago|reply
[+] [-] zedshaw|14 years ago|reply
[+] [-] dnc|14 years ago|reply