I’ve read Design Patterns and similar material. While I’ve certainly
picked up some good ideas, it seems that most of the techniques are
simply the normal ruby way, or are only necessary for lower level
languages and aren’t applicable.
There are a lot of really useful things that can be done with
method_missing, duck-typing, closures, reflection, all the
metaprogramming stuff, etc. Most of what I understand of that comes from
looking through the source of ruby projects.
Are there any books or other resources on design patterns or techniques
specific to dynamic languages?
There is another, “Replace Mixin With Class”, but I haven’t made a
writeup of that one yet. (I will, its just that I am up to my eyebrows
in other projects right now.)
Those two refactorings together where useful in cleaning up
Test::Unit::XML a bit. You can read about it here: Kallokain: Ruby Refactorings.
Are there any books or other resources on design patterns or techniques
specific to dynamic languages?
I have an old issue of Dr. Dobb’s Journal (August 1997), that has an
article entitled: “Dynamic Design Patterns in Objective-C: Dynamic run
times affect how programs are designed and built”. While the article
focuses mainly on Objective-C and gives some examples from the
NeXTStep Runtime (today in use as Mac OS X’s Cocoa), the dynamic
runtime of Objective-C is sufficiently similar to Ruby’s that many of
the same principles apply. Apparently, the full text of the article
is available here: