Представьте что у вас есть некий класс API, который вы хотите использовать. Но вместо того чтобы всегда и везде писать
api.method(args)
вы хотите просто писать use_dsl { method(args) }
внутри вашего обьекта.
Имея следующие классы, соответственно, API и его клиента реализуйте метод use_dsl
так, чтобы получить такой вот результат:
client = Client.new(ThirdPartyAPI.new)
client.run_local_variable
# Output:
# a: 1
# No method `a`
client.run_instance_method
# Output:
# b: 2
# No method `b`
client.run_instance_variable
# Output:
# c: nil
# c: 3
# No method `c`