Copeland 0.1.0 "Fanfare for the Common Programmer" is ready for public 
consumption.  http://copeland.rubyforge.org

Copeland is an Inversion of Control (IoC) container for Ruby, based 
closely on the Hivemind project (for Java).  It allows developers to 
specify the dependencies and relationships between objects in a 
configuration file (YAML, of course), and the container will then 
dynamically tie those interrelated objects together at runtime, either 
by passing dependencies as constructor parameters or by setting them as 
properties.

Copeland also supports the concept of interceptors, which can sit 
between a client and a service and 'intercept' any method call on the 
client.  The interceptor then has the option to forward the request 
along, perform a different action altogether, or even just abort the 
request.  As with everything else IoC, interceptors may be applied 
dynamically to a service by specifying them in the module descriptor file.

There are still bells and whistles left to implement (I mean, hey, it's 
only version 0.1) but it has sufficient functionality right now for 
fairly complex programs.

Hopefully, Copeland will be available as a remotely installable ruby gem 
in the near future.  For those of you that want to try it right now, you 
can go to http://rubyforge.org/projects/copeland and grab either the gem 
file (if you want the gem install) or the .tar.gz file (for a standard 
setup.rb-based library install).  Either way, you'll need to make sure 
that you also have Log4r [1] installed, since Copeland uses it extensively.

Pound on it, and let me know what you think of it.  In particular, if 
you have prior IoC container experience (especially Hivemind) your input 
will be very welcome.

Thanks!

Jamis Buck

[1] http://log4r.sourceforge.net

-- 
Jamis Buck
jgb3 / email.byu.edu
http://www.jamisbuck.org/jamis

ruby -h | ruby -e 
'a=[];readlines.join.scan(/-(.)\[e|Kk(\S*)|le.l(..)e|#!(\S*)/) {|r| a << 
r.compact.first };puts "\n>#{a.join(%q/ /)}<\n\n"'