You might be wondering why the Rack library is vendored, and why we don't just depend on the Rack gem. The reason for this is because there are broken applications out there that have a hard dependency on rack == 0.4.0 (the latest version of Rack is 0.9.1 at the time of writing). If Passenger depends on the Rack gem, then the application will crash with a gem version conflict error upon executing 'gem "rack", "=0.4.0"'. To fix this conflict, we vendor Rack. When we load our vendored Rack library, it won't be registered as a gem, so no RubyGems version conflict exception will be raised. Rack is backwards-compatible so there shouldn't be any problems.