> How did I define the interface?  The comment above the method.  No,
> I'm not kidding.

Doesn't this make it very difficult to write frameworks where you often
need to define an 'interface' that extensions should implement in order
to plug into the framework?

A practical example of this came up on the Nitro/Og mailing list where
someone asked if there was any support for the Firebird database. The
reply indicated that there wasn't but that the OP was welcome to
contribute a 'Store' that the Og framework could use to interact with
such a database.

In other words, the Og framework needs to define (not necessarily in
code) what implementaters of a 'Store' should be providing. In Java
this could be acheived by either defining an abstract base class or
(preferrably) an interface. This specifies the 'contract' that the
framework expects a valid 'Store' instance to support.

>From what you're saying, the answer in Ruby is to examine the code
and/or the documentation, which is reasonable enough, but, it does seem
to make it much more difficult to extend frameworks written in Ruby.
Particularly since you wouldn't know whether you'd missed a method
until you attempted to run some code.