Как посмотреть класс ruby ​​для вызовов методов? (например, внедрение зависимостей, хуки, обратные вызовы) - PullRequest
0 голосов
/ 19 мая 2009

У меня есть класс Populater для заполнения базы данных случайными данными. Я хотел бы измерить метод запуска популяции с помощью индикатора выполнения rtui . Но вместо того, чтобы вызывать объект индикатора выполнения внутри класса Populater, я хотел бы иметь третий класс для увеличения индикатора выполнения при вызове определенных методов в классе Populater. Код, который я имею в виду, выглядит так:

@populator = Populator.new
@pb = ProgressBar.new
Watcher.watch(@populator, :before, :add_record) do
  @pb.subject = "Adding a record..."
  @pb.inc
end

Watcher будет вызывать блок наблюдения перед выполнением @ populator.add_record.

Какой лучший способ реализовать это?

Ответы [ 3 ]

1 голос
/ 07 января 2010

Возможно, вы захотите взглянуть на RCapture , библиотеку Ruby, которая позволяет устанавливать методы на методы с помощью простого и согласованного интерфейса.

Christoph

0 голосов
/ 19 мая 2009

Разве это не сработает, чтобы сделать это:

def watch(populator, when, dowhat)
    yield
    populator.add_record
end 

Надеюсь, это поможет ...

0 голосов
/ 19 мая 2009

Я бы порекомендовал вам взглянуть на схему наблюдателя . Я бы избегал модных динамических трюков до того, как они стали действительно необходимыми, паттерн наблюдателя прост и довольно хорошо понят.

Также проверьте Наблюдаемый класс в rud's stdlib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...