It's not hard to write thread-safe code in a Rails application. Simple rules will save any app:
Don't share mutable state If you must share mutable state, mutex around all accesses to it
In multi-process environments "would have little to no impact".
In multi-threaded environment the story is completely different.
http://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html
Passenger and Unicorn are both multi-process.
Passenger Enterprise can be configure as multi-threaded: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#PassengerConcurrencyModel