ruby on rails - activessupportnotification -打印到控制台或日志以调试



我想在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

我已经添加了putsRails.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回调或模型中的观察者。

相关内容

  • 没有找到相关文章

最新更新