Rails 的 Django 信号等效吗?

Hel*_*iro 5 ruby django ruby-on-rails callback observer-pattern

在 Rails 中,我见过的最接近Django Signals的是Observers。它们的问题在于,它们仅限于触发与模型生命周期相关的硬编码事件的回调。

Django 信号可以在任何地方创建、在任何地方触发并在任何地方处理。模型生命周期回调只是碰巧内置的常规信号,由 ORM 触发。

有谁知道 Rails 有类似的通用解决方案吗?它可以是一些通用的 Ruby 库,不依赖于 Rails,这会更好。


编辑:观察者是最接近的东西,但这不是我正在寻找的东西。这是一个一对多的解决方案。任何人都可以收听,但只有原始对象可以发帖。我想要一个声明信号的东西,任何人都可以触发它并处理它。另外,我不喜欢 Ruby Observer 规定处理程序具有 #update 方法。我希望能够传递具有适当签名的任何方法引用。

我可以使用 Ruby Observer 来实现我自己的此类代理,但我正在尝试了解是否有人已经这样做了。

Chu*_*uck 3

我认为比 Rails 的 Observer 更接近的是标准 Ruby Observable 模块。它允许您向对象添加观察者列表,然后该对象可以在发生更改时向观察者发送通知。