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”’