I've found working with the
rgeo gem very pleasant. To the contrary of nearly every other answer for this question, I would say its definitely worth looking into if you are familiar with ruby. If you're not, I'd say there's probably not a particular advantage based off some of these other answers but ruby was great for running scripts for me while I loaded in gigabytes of shapefile data to run postgis queries on. On the database side its been an absolute pleasure.
The combination of rails's ActiveRecord bindings for postgis, in conjunction with rgeo and the squeel gem, its been just another relatively easy day in the park as far as a ruby application normally goes.
For THE introduction to working with GIS on rails, see this rubyconf talk by Daniel Azuma http://www.youtube.com/watch?v=QI0e2jkUbkk
Azuma works for google but also wrote the rgeo gem for ruby. rgeo has the extensions rgeo-shapefile & rgeo-geojson (these are the two I've used so far) that make it easy to plug into existing datasets. rgeo-shapefile can only read shapefiles as far as I can tell but rgeo-geojson can read and write.
Here's part 1 of an 11-part series blog post he's been writing for some time now. The series has been extremely useful to me.