[ANN] Copland 0.2.0 "Appalachian 'Spring' "

Copland 0.2.0 "Appalachian ‘Spring’ " is available for download!

http://rubyforge.org/projects/copland

Version 0.2.0 adds the following new features:

  1. Configuration points. These are (more-or-less) just hashes that
    service modules may contribute values to. Other services may then use
    these configuration points when initializing themselves. This allows
    independent services to contribute to one anothers’ initialization.

  2. Substitution Symbols. This allows you to have specially-formatted
    text symbols in your service parameters and properties, which will be
    dynamically replaced when the service is instantiated. The values
    corresponding to the symbols are taken from a special configuration
    point, so you can easily add new symbols or replace existing symbols in
    your service modules.

  3. Multicast services. With these you can tie multiple services
    together under one service. Whenever a method of that top-level service
    is invoked, the corresponding methods of the contained services are
    invoked. And since a multicast service is just another service, you can
    tie one to yet another mulitcast service, if you needed to. You can
    also add interceptors and listeners (see following) to a multicast
    service, just as you can with normal services.

  4. Listeners. You can register a service with another service, so
    that the first service is invoked when a particular event occurs on the
    second. Currently, the only events are registry_initialized (invoked
    when the Registry is first initialized), service_instantiated (invoked
    anytime an instance of the service is created), service_pooled (invoked
    whenever a service is returned to a pool of services), and
    service_unpooled (invoked whenever a service is removed from a pool).

  5. Class and Singleton services. You can take any Class that has
    class methods and turn it into a service, with the class methods
    becoming the methods of the service. Same with any class that includes
    the Singleton mixin. As with any other service, you can front these
    services with interceptors, listeners, and multicasters, too.
    Transparently!

As before, it is available as gem (copland-0.2.0) or as a tar.gz (with
included setup.rb script). Some minor updates have been made to the
documentation (including a justification of IoC), but much more work
remains to be done. Examples of the new features do not exist except in
the unit tests.

Comments and suggestions, as always, are welcome.

···


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

And just a note for those that are using the Alpha of RubyGems, I
installed copland-0.2.0 in the gems repository on RubyForge, and (I
believe) that Copland is the first library to actually require another
gem!

So, if you:

[sudo] gem --remote-install copland

it will install log4r as well!

Very cool to see it work :slight_smile:

-rich

···

On Mar 22, 2004, at 5:09 PM, Jamis Buck wrote:

As before, it is available as gem (copland-0.2.0) or as a tar.gz (with
included setup.rb script). Some minor updates have been made to the
documentation (including a justification of IoC), but much more work
remains to be done. Examples of the new features do not exist except
in the unit tests.