I strongly recommend reading through the text description of the various
code smells:
http://wiki.github.com/kevinrutherford/reek/code-smells
I agree with Joel's assessment. Although useful, "reek" is a very whiny
and paranoid robot, and many of its concerns are overblown and not worth
resolving.
As for your concern with the Duplication smell and how to resolve it --
this smell is caused
by "repeated identical method calls within any one method definition", a
concern because this may return inconsistent results and incur a
performance hit. For example, Duplication smell would come from a method
that makes multiple calls to `Foo.count` because it's executing an
expensive query and may return different results each time it's called.
To resolve the smell, you would do something like "foo_count =
Foo.count" and use this consistent value rather than re-executing the
dynamic method.
-igal