Phusion Passenger 4.0 supports JRuby, Rubinius
blog.phusion.nl
blog.phusion.nl
- Start up time. It starts to sting after a while when frequently firing up console and compiling assets.
- Gems compatibility. For the most part, this is a non-issue, but we had to do some JRuby related patches to some gems (hstore support for postgres, and some others that I can't think of off the top of my head).
- Torquebox. It's a solid project, but we had a bunch of small issues that we can into that made it a bit painful. Weird terminal buffering on console (same thing for ruby-debug), requests dropping on restarts, and some other issues. The baked in backgrounding and the stomplet support is really nice, but we decided to sacrifice these things for something that we understand a lot better (we have a lot more experience with the ruby servers than the JBoss and other java application servers).
A lot of it boils down to us not having the time to learn and fix the issues we were running into w/ the JRuby deployment. We need to focus on building our application, so we don't have the luxury of learning a new deployment ecosystem. That said, we are using AngularJS, so there is "one" thing new that we're all learning.
I think it might be worth dropping an Email to JRuby mailing list (https://github.com/jruby/jruby/wiki/MailingLists), if you haven't already about what troubles you faced and why you are switching.
I've been using Torquebox since version 2.0.1 (not that long really) but I've never really had a completely stable server. Deployment has always been somewhat of a hassle and recently the HA cache has been so broken that I have not been able to use torquebox in a cluster.
In the end, I'm just happy to have another option. The more the merrier.
- We don't run multiple apps inside the same JVM. We strictly run each app in its own JVM, no exceptions. As I've understood, running multiple apps in the same JVM can cause garbage to leave behind when you try to uninstall an app. And the JVM does not always perform optimally when the heap is large.
- We integrate directly into Apache and Nginx, so no need to setup AJP reverse proxies. I don't think Nginx has an AJP connector.
- Phusion Passenger is also a great option for people who want to take advantage of JRuby (whether it's for the speed, or the threading implementation, or whatever) but aren't intimately familiar with the J2EE stack.
- Our support for multiple Ruby versions (and even multiple languages) allows you to easily mix and match things. No need to commit 100% to Java, or MRI, or any particular implementation/version.