ruby scratch DSL