We all know the Rails Can’t Scale line to be bunk, but that doesn’t mean we stop looking for ways to speed up Rails apps.

Mike Perham says his apps are Phat, and yours can be, too. Phat is a Rails app pattern that employs a single Thread, multiple Fiber model in Ruby 1.9 to async-ify an otherwise vanilla Rails app behind Thin.

Phat uses rack-fiber_pool, Mike’s Rack Middleware to execute each request in a Fiber. Phat also configures Fiber-enabled async libraries including em_postgresql, memcache-client, and em-resolv-replace to achieve some impressive scalability:

# Asynchronous DNS lookup
require 'em-resolv-replace'
require 'rack/fiber_pool'
# Pull in the evented memcache-client.
# You'll need to configure config.cache_store as normal.
require 'memcache/event_machine'

Rails::Initializer.run do |config|
  config.cache_store = :mem_cache_store
  # Run each request in a Fiber
  config.middleware.use Rack::FiberPool
  # Get rid of Rack::Lock so we don't kill our concurrency
  config.threadsafe!
end

[Source on GitHub] [Mike’s Blog Post]


Have comments? Send a tweet to @TheChangelog on Twitter.

Subscribe to The Changelog Weekly – our weekly email covering everything that hits our open source radar.