lei*_*ifg 0 ruby notifications activesupport
我最近发现了有关ActiveSupport :: Notifications的信息.我认为这是一个监控应用程序的好工具.
我目前正在Rails之外使用它来监控我的Sinatra应用程序,它运行良好.
但是我经常使用它来检测自定义查询,并希望以某种方式通知查询结果:
my_input = "some_query"
ActiveSupport::Notifications.instrument("myapp.create", :input => my_input) do
#stuff
result = search_for my_input
#stuff
result
end
Run Code Online (Sandbox Code Playgroud)
现在我可以订阅它并且还可以获得已执行的查询(在有效负载哈希中可用).但我也希望在订阅者中看到结果.
那么有没有办法在执行块时向有效负载添加任何自定义值?
小智 6
当我在寻找同样的事情时,偶然发现了你的问题.
您可以简单地传入一个块变量,它将代表您的有效负载,并且您可以在块中填充它
my_input = "some_query"
ActiveSupport::Notifications.instrument("myapp.create", :input => my_input) do |instrument|
#stuff
result = search_for my_input
instrument[:my_result] = result
#stuff
result
end
Run Code Online (Sandbox Code Playgroud)
在您的订阅者中,从传递的参数创建一个新事件:
ActiveSupport::Notifications.subscribe("myapp.create") do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
Rails.logger.info event.payload
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |