Not needing getters/setters makes Ruby rock? Lots of languages allow this, but Ruby's allowing you to elide parentheses means you can't assume that a property is a property or a function. In other languages, the property versus accessor distinction is more limited and less confusing.
method_missing, which is a bit of a hack and is at least a double edged sword, makes Ruby rock? Sure, it's handy magic, but it's a pretty dangerous form of magic.
I'm not sure I could think of less significant attributes for a language.
you can't assume that a property is a property or a function. In other languages, the property versus accessor distinction is more limited and less confusing.
Ruby does not have "properties." All data is private and you interact with objects using messages.
As a user of an object's interface all you need to know is how something behaves when sent various messages. Whether "foo = 12" is really setting an instance variable named "@foo" or something else entirely should be irrelevant. It's an implementation detail.
I realize this sounds possibly condescending and pedantic, but I've seen too many Ruby tutorials that try to present the language in terms of behavior found in other languages where the result is a broken mental model of how Ruby actually works. Hence, confusion.
Unfortunately the conflation of methods that happen to get or set instance variables with the notion of properties (AKA "attributes") has become ingrained.
method_missing, which is a bit of a hack and is at least a double edged sword, makes Ruby rock? Sure, it's handy magic, but it's a pretty dangerous form of magic.
Thinking in terms of messages sent to a receiver, "method_missing" is far less magical. It's more something you'd expect in a message-handling system.
Well, as you say, you work on a large Ruby codebase, so I apologize if the following comes off as condescending. I don't follow this first bit, though.
You say, "Ruby's allowing you to elide parentheses means you can't assume that a property is a property or a function."
There's no such "thing" as a property in Ruby, yeah? Everything+ is an object and objects respond to methods. IMO this is one of the places where Ruby is not being magical. attr_reader and friends are built on top of this to give programmer's a convenient shorthand way of defining boilerplate getters and setters when you need them.
In this regard Ruby is more homoiconic. "getters" and "setters" are just plain ol' methods!
It'd be much more confusing, IMO, if there were now two types of "things" that could be attached to an object: methods and properties/attributes. You'd have to develop a separate convention, syntactic or otherwise, for information hiding, e.g., how would private properties work? You're now in a funny situation where one kind of variable (instance variables) might differ from other kinds of variables in a dimension other than scope.
Python's answer is "neither properties nor methods are ever really private" which is internally consistent but very un-Ruby.
+: I know this isn't literally true. Methods aren't objects, for example, and there are plenty of keywords like case, when, if, etc. which are neither methods nor objects but units of pure syntax.
I personally love the fact that it's all method-based. IME at least it shouldn't matter whether something is a property or a method. All I care about is the state change or return value or exception thrown.
To add to this: Both of these are things we used to do extensively in PHP, years ago. Not only does that pretty much kill the 'unique' angle the article wants to take, it wasn't a good idea or readable practice back then.
I don't doubt that there really are great reasons to use Ruby; hopefully, when the author figures out what they are, he'll revisit this and contrast the real benefits with this unfortunate cruft.
method_missing, which is a bit of a hack and is at least a double edged sword, makes Ruby rock? Sure, it's handy magic, but it's a pretty dangerous form of magic.
I'm not sure I could think of less significant attributes for a language.
Note: I work on a large Ruby codebase...