在 Rails 中,我见过的最接近Django 信号的是Observers。它们的问题在于它们仅限于触发与模型生命周期相关的硬编码事件的回调。
Django 信号可以在任何地方创建、在任何地方触发和在任何地方处理。模型生命周期回调只是碰巧内置并由 ORM 触发的常规信号。
有谁知道 Rails 的类似通用解决方案?它可以是一些通用的 Ruby 库,不依赖于 Rails,这样会更好。
编辑:观察者是最接近的东西,但这不是我想要的。这是一个一对多的解决方案。任何人都可以收听,但只有发起对象可以发帖。我想要你声明一个信号的东西,任何人都可以触发它以及处理它。此外,我不喜欢 Ruby Observer 规定处理程序具有 #update 方法的事实。我希望能够使用适当的签名传递任何方法引用。
我可以使用 Ruby Observer 来实现我自己的此类代理,但我正在尝试了解是否有人已经这样做了。