Ruby is an excellent programming language for creating and managing custom
DSLs, but how can you securely evaluate a DSL while explicitly controlling the
methods exposed to the user? Our good friends instance_eval and instance_exec
are great, but they expose all methods - public, protected, and private - to
the user. Even worse, they expose the ability to accidentally or intentionally
alter the behavior of the system! The cleanroom pattern is a safer, more
convenient, Ruby-like approach for limiting the information exposed by a DSL
while giving users the ability to write awesome code!.