The more I learn, the less I know.
Ruby on Rails
Follow my dabbling in Ruby and Ruby on Rails.
Dealing with Heroku startup lag
Jul 25th
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.
iterate through each child association of a active record class
Jun 20th
I came across this today while trying to find a better way to deal with error messages in rails. IMHO, it is genius and just what I was looking for. More >
How to create a ruby gem
Apr 2nd
Yehuda Katz (@wycats) just did a fantastic write up on making gems and how to use .gemspec properly. Be sure to check it out on his blog: http://yehudakatz.com/2010/04/02/using-gemspecs-as-intended/
Kickstarting mongrel with 503 errors.
Mar 24th
So, I’m a total sucker for punishment, and thus I run a very small rails (mongrel) app on my website (shared host). Every once in a while, the mongrel app dies for some reason (server was rebooted, power loss, etc), and the PID file isn’t removed. So I tried an experiment. I told apache to use a PHP file for 503 errors (Service Unavailable — or what my users see when apache tries to rewrite to a mongrel that isn’t there). Then I wrote setup the PHP file to try and start rails, and email me if it fails. Read below for all of the PHP code and shell files used. More >
Random SQL query in Ruby on Rails
Jan 10th
SQL doesn’t seem to have a good standard on the name for a random function. In my app, I wanted to select a record that had not been updated recently. So I went with a ORDER BY ‘last_cache DESC, RAND()’
This would be perfect if I was using MySQL… But I use SQLite for development on my local machine. SQLite wants the function to be called RANDOM(). To make matters worse, Rails doesn’t seem to have a database agnostic way to go about this.
So for the short term, I went with a little hack to get things working everywhere. In my config/development.rb I defined SQL_RANDOM_FUNCTION = ‘RANDOM()’ and I also defined it in my config/production.rb file as ‘RAND()’. Then in any query I need the random function, I just concat SQL_RANDOM_FUNCTION to the string and it all works.
It isn’t really ideal, but it isn’t like my DB will randomly change to PGSQL overnight, without me knowing.