在Rails中,我所见到的最接近Django Signals的是Observers。它们的问题在于,它们限于触发与模型生命周期相关的硬编码事件的回调。相当于Django信号的Rails?
Django信号可以在任何地方创建,触发任何地方并在任何地方处理。模型生命周期回调只是偶然发生的常规信号,由ORM触发。
有谁知道类似的一般解决方案的Rails?它可能是一些通用的Ruby库,与Rails无关,这会更好。
编辑:观察是最接近的事情,但它不是我要找的。这是一个一对多的解决方案。任何人都可以听,但只有原始对象可以发布。我希望你能声明一个信号,任何人都可以触发它并处理它。另外,我不喜欢Ruby Observer规定处理程序有一个#update方法的事实。我希望能够通过适当的签名传递任何方法引用。
我可以使用Ruby Observer来实现我自己的这种代理,但是我试图了解是否有人已经做到了。
它只是Observer模式,它是Ruby标准库的一部分,而不是Rails。据我所知,Rails Observers是一个特殊的常规配置案例。 – 2009-08-08 12:20:51