在rails中,我见过的最接近Django Signals的是Observers。它们的问题在于,它们仅限于触发与模型生命周期相关的硬编码事件的回调。
django信号可以在任何地方创建、触发和处理。模型生命周期回调只是碰巧内置的、由orm触发的常规信号。
有人知道Rails的类似通用解决方案吗?它可以是一些通用的ruby库,而不是绑定到rails,这样会更好。
编辑:观察者是最接近的,但这不是我要找的。这是一对多的解决方案。任何人都可以监听,但只有原始对象可以发布。我想要你声明一个信号的地方,任何人都可以触发它并处理它。另外,我不喜欢ruby观察者要求处理程序有一个更新方法。我希望能够传递任何带有适当签名的方法引用。
我可以使用ruby观察者来实现我自己的这样的代理,但是我正在尝试了解是否有人已经这样做了。

最佳答案

我认为一个比rails更接近的观察者是standard Ruby Observable module。它允许您将观察者列表添加到对象中,然后对象可以在其更改时向观察者发送通知。

07-24 19:17
查看更多