All method calls in the block are handled by method_missing, which passes the outer self and the method name, specifying an attribute, along with the block, to a new DSL class.
method_missing is used here because potentially any method name could be used. In general, you should only use method_missing if any possible method name is valid.
Any questions about this class?