However, smart spawning was limited to Rails applications only, not for Rack applications. Starting from Rails 3, all Rails 3 applications are also Rack applications, and Phusion Passenger 2 only supports smart spawning of Rails 3 applications if you remove config.ru (thereby forcing Phusion Passenger to detect it as a Rails app, not a Rack app).
Phusion Passenger 3 now supports smart spawning for all Rack applications. This works transparently and without further configuration. …
Since Rails 3 is closer to Rack, the Metal abstraction is no longer needed. The Rails Metal feature has been removed from Rails 3.
You can read the commit message to have an explanation of what to do with your existing Metals.
Only ActiveRecord fixtures in the test/fixtures folder
Commit 8ec085bf1804770a547894967fcdee24087fda87 breaks the usage of the fixtures folder for non-model fixtures. If you were used to place fixture files for your custom libraries …
You should now be able to add Rails and Rack applications with the Passenger Preference Pane. Note: When opening the Passenger Preference Pane, you might see this warning:
This is normal if you have a 64-bit machine. Since RubyCocoa is 32-bit, it just has to relaunch the preference pane.
RVM is a fast moving target and as such these installation instructions may be out of date by the time you read them. I try to update my older posts when I get new information, but if you stumble …
Server side tracing with Rack & Ruby
The original announcement at Google IO demoed this new functionality on top of GWT and the Spring TC server . However, this same functionality is also easily extracted into a Rack middleware - which is what I did. In fact, here is a preview of sample trace from a Rails 3 application using rack-speedtracer :
The middleware takes care of providing the headers, persisting the traces, and then serving all the data back to Speed Tracer…
…2.3.6 bumped the Rack dependency from 1.0 to 1.1. Applications using other Rack frameworks like Sinatra would likely have been affected sooner as they're able to take advantage of a new Rack release more easily.
We first noticed a problem when deploying a Rails 2.3.5 app with JRuby (which was a real pain to track down as something in JRuby was activating Rack 1.1 even though Rails 2.3.5 uses 1.0) and then it cropped up again in one of our Sinatra apps.
So what's …
Chef's cookbook upload implementation made assumptions about the Rack input that were not valid when running Chef server under Unicorn. Thanks to Joshua Sierles of 37signals for his help troubleshooting this issue. (Ticket)
Erik Kastner found an issue where Chef was too strict checking the exit status of the chkconfig command when starting a service for the first time. Thanks, Erik! (ticket)
Marek found and fixed a bug in the retry logic for committing …
…that pushed toward this goal. Rack/Fiber-Pool by Mike is a piece of Rack middleware that runs each request in it's own Fiber, allowing the possibility of easy cooperative scheduling in Rack applications. While EM-Synchrony provides a set of Fiber-aware EventMachine clients for common things like HTTP requests, Memcached, MySQL and Mongo.
JavaScript client-side syntax highlighting
An Interview about Programmers from a …
Developers hankering for more performance from their Rack and Rails applications are using Ruby 1.9 fibers and event-based EventMachine -driven libraries as a way to boost the performance of their applications - in opposition to scaling by merely running multiple processes or using threads.
It's no secret that thread-based development can be Hard™, even if you didn't have to deal with Ruby quirks like autoloading not working properly and the GIL ( Global Interpreter Lock…
With Rails 3 inching ever closer, there's likely to be a good bit of attention on Rack Middleware over the coming months. It's there as an option in Rails 2.3, but with Rails 3 it'll get the attention it deserves.
Working on a few Rails 3 apps, I've been very pleased to find Coderack (via Robert Brook on twitter , I think). It's a directory of middleware, packed with interesting tools.
The one discovery I'm so far using is StaticFallback …
…we'll benchmark with a simple Rack application. Consider the following hello world Rack application: app = proc do |env| [200, { "Content-Type" => "text/html" }, ["hello world\n"]] end
run app
How fast does this run on Phusion Passenger 2.2?
Operating system: OS X Snow Leopard
ab -c 25 -n 10000 http://rack.test/ , pool size 25
Apache: 1628 req/sec
Nginx: 1843 req/sec
Now let's look at Phusion Passenger 3:
Operating system…