Ужасный хаккейный способ сделать эту ужасную хаккейную вещь - это использовать method_missing.
class Ouch
def initialize
@log = ""
end
def method_missing(method)
if @log.empty?
@log = method.to_s
else
@log += " #{method}"
end
self
end
def run
@log
end
end
Теперь вы можете сделать:экземпляр Ouch
метода, которого он не знает (ничего кроме запуска), возьмите новый из этого метода и добавьте его к строке журнала, хранящейся как переменная экземпляра (@log) внутри вашего экземпляра.Наконец, вам нужна какая-то функция извлечения, например, run, чтобы объект знал, что вы закончили и хотите вернуть накопленный журнал.Надеюсь, это поможет.
[EDIT]
Чтобы быть совершенно ясным, method_missing - это "волшебная" функция Ruby, которая вызывается всякий раз, когда вызывается метод объекта, который объект не распознает.