Ruby's Dark Corners

Recently, I've been immersing myself in the Ruby language for the need of our new programming language paradigms course. Ruby is there to showcase run-time metaprogramming.

I have been surprised by how some language features are governed by byzantine rules. Most practitionners know and use these features, supported by an heuristic undertanding of them that is serviceable in most situations. However, itt turns out almost no-one understand the precise semantics.

After investing some time to understand these features, I thought I would go the extra mile and publish my findings. Here are the topics I will cover:

If you think all of this is documented elsewhere, read Ruby's Specification Problem and think again.