2013-01-14 44 views
0

我想要在更新我的FbPlace類(mongo文檔)的對象時觸發新對象的創建。 FbPlace只能通過控制檯或Rake任務中的腳本進行更新。 是否有可能檢查我的fb_places訂閱是否在我的rails s選項卡或我的日誌文件中正確觸發?ActiveSupport通知 - 打印到控制檯或登錄到調試?

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")通知是越來越被觸發,但是我還沒有看到任何打印到控制檯或我的日誌文件呢。

有什麼建議嗎?

回答

1

您沒有指定您實際訂閱活動的位置。我會想象你在初始化器中執行它,並且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 callbackobserver