I lived with Python for 4 years before I lost an argument at my own company and had my project moved to Ruby. I've since moved in with Ruby and haven't looked back.
* Everything in Python feels like a symbol table hack. Private methods? We have those! Just exploit this bug in the class symbol table lookup code!
* First-class symbols. There may be little difference under the hood between a Ruby interned string and a Python string atom, but there's definitely a difference syntactically. This is a difference that is hard to articulate, but if you've written much C, it's like having every "enum" you could ever want predefined for you, and completely eliminates "magic numbers".
* Blocks and lambdas. I've read GvR's take on this. I know he thinks a named function is just as good --- maybe even better! --- than an anonymous function. I had nested named functions/functors in C++ and Java. Even Tcl "uplevel" is better than Python's castrated lambda.
* Method definitions in Ruby don't need to accept a "self" argument. Again: all of Python feels like a symbol table hack to me.
* Ruby has first-class Regexps. Python has an "re" library. You know what else has an "re" library? C.
* I haven't found an expression that is better written as a list comprehension than as a map/reduce/select expression.
There are painful things about Ruby:
* The FFI is immature. Outside of Common Lisp, Python ctypes may be the best FFI out there.
* I never got Python to crash on me (at least, not where it was Python's fault). I crash Ruby once a week.
* Ruby is palpably slower than everything. If performance matters to you and you don't know C, you may be better off in Python.
* The community is led by the nose by Rails developers, which can at times feel like a worst-of-all-worlds grab bag of methodology programmers, web designers, and dabblers.