[This is [a DZone Snippet I created in August 2007][dzone-snippet]. DZone Snippets is now a defunct site, so I’m reposting it here.]
Dependency injection in Ruby is as easy as falling off a log. As [Jamis Buck has pointed out][jamis-buck-net-ssh-revisited], DI is a good thing, but DI frameworks for Ruby are overkill. The language makes them unnecessary.
Here's how to enhance [Module#attr_reader][ruby-module-attr-reader] and [#attr_accessor][ruby-module-attr-accessor] so that they can receive an options hash for specifying the default value of an attribute.
module AttrWithDefaultExtension
module ClassMethods