Having used both Ruby on Rails and Django for a handful of projects each I've reached the following conclusion:
Rails has some nifty features, but it makes the mistake of hiding away functionality such as the request/response nature of how the web works. You should have to go crawling through documentation to find out how to access the request object.
Django's approach is to give you a request object and require that you return a reponse object, everything in-between is entirely up to you. Of course it gives you a hell of a lot of convenience methods, and a very elegant template language, not to mention a pretty good automatically-generated admin application. Rails requires that you spend an obscene amount of time with the documentation to avoid writing really bad code - it makes it far too easy to write inefficient apps. It's slightly slower to get up and running with Django (it doesn't do any scaffolding for you) but after about 10 minutes you'll be good to go.
Rails allowed about 10 times the productivity over Java frameworks (not really an exaggeration), Django allows me to work about twice as fast again.
I do like Ruby as a language, it has a lot of useful functionality that allow you to do some very advanced stuff in a small amount of code, but as a framework Rails does too much magic in the bad way. Good magic is "I wonder if there's already a way to solve this problem so I don't have to do it all myself. Oh, there is, coolio". Bad magic is "So how exactly is this controller method called? Where am I passed the request object? How do I specify a different template? Can I use a different template engine? Do I ever get to see the response object?" ie, they're all questions that have answers and can be done in Rails, but the answer isn't obvious just by looking at the code.
Detty. Professional Expert.
Flickr Twitter