>http://rm-f.net/~cout/code/ruby/treasures/RubyTreasures-0.3/lib/hacks/interface.rb.html
> 
> but as I use Ruby more and more, I see less and less use for this.
> 
> Paul


This is what I was getting at.  Nice code.  Why do you feel that this
is not needed in Ruby?

I want to be able to create a specification, actually a bunch of them,
and enforce that subclasses of each would always implement a base set
of methods that could always be counted on to exist.  Whoever said
*contract* gets the point that I'm after.  Think JDBC, for those of
you who know Java, you know that JDBC is nothing but a *contract* that
all vendors must implement in exactly the same way from the API,
internally they are free to do as the wish.  I want to enforce this
same kind of contract in my code, not the database layer just the
contract concept.  I understand Ruby's `mixins' to be a work around
for Ruby's lack of MI support.  I understand Java uses Interfaces to
work around its lack of MI support as well, however this is not my aim
with this post, I'm stricly looking for contract enforcement.

Paul's code is great, but I was hoping for something `sorta'
built-into Ruby already.  I think contract support is needed in large
scall applications, somethig which Ruby could be used for more and
more given the effects of More's Law and Ruby's clean OO model. 
Abstract Classes in C++, and Java's Inerfaces are neccessary for
building large scale applications.  My shop uses C++ Abstract classes
all the time to enforce contracts; it would be difficult without them.

Thanks for the discussion from everyone thus far...

//ed