我想在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")
这样的事情时是否触发通知,但我还没有看到任何打印到控制台或我的日志文件。
任何建议吗?
您没有指定实际订阅事件的位置。我会想象你在初始化器中这样做,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回调或模型中的观察者。