在Rails中,我看到的最接近Django信号的是观察员。它们的问题在于,它们仅限于触发与模型生命周期相关的硬编码事件的回调。
Django信号可以在任何地方创建、在任何地方触发和处理。模型生命周期回调只是内置的、由ORM触发的常规信号。
有谁知道Rails有类似的通用解决方案吗?它可以是一些通用的Ruby库,而不是绑定到Rails,这会更好。
编辑:观察者是最接近的东西,但这不是我要找的东西。这是一对多的解决方案。任何人都可以侦听,但只有原始对象才能发帖。我想要一些你声明一个信号的东西,任何人都可以触发它,也可以处理它。另外,我不喜欢Ruby观察者规定处理程序有一个#update方法。我希望能够传递带有适当签名的任何方法引用。
我可以使用Ruby观察者来实现我自己的代理,但是我正在尝试学习是否有人已经这样做了。
发布于 2009-08-08 08:55:03
我认为比Rails的观察者更接近于标准Ruby可观测模块。它允许您向对象添加一个观察者列表,然后当对象发生更改时,该对象可以向观察者发送通知。
发布于 2014-08-21 01:07:14
那“智慧”宝石呢?https://github.com/krisleech/wisper
Wisper是一个Ruby库,用于使用Pub/Sub分离和管理Ruby对象的依赖关系。 它通常被用作ActiveRecord回调和观察者的替代方案,以减少数据层和域层之间的耦合。
发布于 2009-08-08 10:45:03
也许acts_as_state机器会有所帮助。大多数这种功能最近已经进入Rails边缘。
https://stackoverflow.com/questions/1248323
复制相似问题