事件/观察者驱动Ruby on Rails

Dre*_*rew 6 ruby event-driven listener ruby-on-rails-3

我有一个适用于事件/监听器模型的应用程序.发布了几种不同类型的数据(事件),然后许多不同的事情可能需要或可能不需要对该数据(侦听器)采取行动.听众不需要特定的顺序,每个听众都会决定是否需要对事件采取行动.

Rails应用程序有哪些工具可以完成这项任务?我希望自己不必这样做(虽然,我可以.这不是什么大不了的事.)

编辑:观察者模式可能是更好的选择

Ada*_*rte 6

看看EventMachine.它是Ruby非常流行的事件处理库.它看起来很不错,很多其他库似乎都在利用它(Cramp).

以下是一个很好的介绍:http://rubylearning.com/blog/2010/10/01/an-introduction-to-eventmachine-and-how-to-avoid-callback-spaghetti/


Sha*_*aun 5

您可能想要挂钩到ActiveRecord的Observer类.

http://api.rubyonrails.org/v3.2.13/classes/ActiveRecord/Observer.html

有了它,您的模型可以为多个生命周期事件执行自定义逻辑:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

如果我理解你的意图正确,那么你需要做的就是将那些代表你的监听器动作的方法调用来自那些回调的事件.