Update: I think I may have been fairly high on cold medicine when I wrote this. It really isn’t a good way to go about handling anything, unless maybe your site is just a playground with no traffic. Let’s be honest here, if you have real visitors coming to your site: just pay for more dyno’s and don’t mess with silly hacks like this. </update>
So, if you haven’t tried Heroku yet, you really should. It has got to be the most awesome way to deploy and manage a rails app that I have ever seen. But this article isn’t another Heroku review, instead it is my attempt at getting around one minor pitfall with Heroku.
The problem? If you’re site doesn’t get much traffic, and you are on the free “1 dyno” plan, your dyno’s (rails processes) tend to go offline. This means your next visitor sees your page load for a few seconds before they see anything. It’s not terrible, but I wouldn’t call it ideal, either.
But I think I have found a simple solution to ease the “pain” of this “problem.” (Sarcasm intended): Heroku serves static files from varnish… no delay on those while we wait for the rails app to start.
So what’s happening? Someone comes along to www . my cool site . com, but there are no active dyno’s. As expected, they get sent to index.html, which fires off an AJAX request to the rails app. As soon as it gets a successful result, it redirects the user to the /home path within my rails site. Assuming there are active dyno’s, this all happens very quickly. If the dyno’s are off, a loading message fades in and a few seconds later they get redirect.
I know it isn’t perfect… but it should work until my site gets busier and I can pay for more dyno’s.