我希望在更新我的FbPlace类(mongo文档)的对象时触发创建新对象。 FbPlace仅通过控制台或rake任务中的脚本进行更新。
是否可以检查我的fb_places订阅是否在我的rails s
标签或我的日志文件中被正确触发了?
ActiveSupport::Notifications.subscribe("fb_places_updated.graph_engine") do |*args|
puts "WORKS"
Rails.logger.debug("+++ WORKS")
#Other irrelevant logic
end
我已添加puts
和Rails.logger.debug
以查看当我执行FbPlace.update_attribute(name: "test_name")
之类的操作时是否会触发通知,但我还没有看到任何打印到控制台或我的日志档案。
有什么建议吗?
答案 0 :(得分:2)
您没有指定实际订阅该活动的位置。我会想象你在初始化器中执行它并且rake任务加载环境所以它应该没问题。
要查看在事件发生时对块进行评估,您可以使用Pry,这样您只需键入args
并查看其中的内容即可。把它放到你的Gemfile然后:
ActiveSupport::Notifications.subscribe("fb_places_updated.graph_engine") do |*args|
binding.pry
end
运行rake任务。如果您没有在Pry会话中结束,则不会触发该事件。我不确定应该触发fb_places_updated.graph_engine
事件的内容。我认为你使用mongoid
,据我所知,它不会触发任何工具 - 需要另一面:
ActiveSupport::Notifications.instrument("fb_places_updated.graph_engine", some_data: 42)
如果是这种情况,我不会打扰通知,只需在模型中使用after_update callback或observer。