如何观看方法调用的ruby类? (例如依赖注入,钩子,回调)

时间:2009-05-19 09:32:40

标签: ruby

我有一个用于使用随机数据填充数据库的Populater类。我想用rtui进度条测量populator的run方法。但是,不是在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 个答案:

答案 0 :(得分:1)

您可能需要查看RCapture,这是一个允许使用简单且一致的界面在方法上放置挂钩的Ruby库。

了Christoph

答案 1 :(得分:0)

我建议您查看observer pattern。在真正需要之前我会避免使用花哨的动态技巧,观察者模式很简单且很容易理解。

还要检查ruby的stdlib中的Observable class

答案 2 :(得分:0)

这不会只是这样做:

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

希望这会有所帮助......