I had a suspicion that I was hitting some kind of limit not related to the resources of the Pi. I noticed that, every time I reloaded the app in my browser, three new Ruby threads would be spawned.
Running this forkbomb-like test, I found that Ruby on the Pi can run about 300 threads before giving ThreadErrors. So after every ~100 pageviews, the server would stop serving pages because it had hit the thread limit.
This appears to be a problem with running ARM (probably another one of WEBrick's bugs). When I ran this with Rails 4.0.1 and Ruby 2.0.0 on an Intel Ubuntu server, the threads didn't stay open.