From: Jamis Buck Date: 2004-03-17T07:08:48+09:00 Subject: [ANN] Copeland 0.1.0 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"'