如何访问ActiveSupport :: Notification instrument中正在观看的方法的参数?

时间:2015-05-01 16:43:48

标签: ruby ruby-on-rails-4 activesupport

我最近一直在玩ActiveSupport::Notifications,我无法弄清楚如何获取块中运行的方法的参数。让我举个例子。

您设置了以下乐器。

ActiveSupport::Notifications.instrument('render', extra: :information) do
  render text: 'Foo'
end

您可以通过订阅活动来访问信息。

ActiveSupport::Notifications.subscribe('render') do |name, start, finish, id, payload|
  name    # => String, name of the event (such as 'render' from above)
  start   # => Time, when the instrumented block started execution
  finish  # => Time, when the instrumented block ended execution
  id      # => String, unique ID for this notification
  payload # => Hash, the payload
end

查看documentation,我找不到任何可以提供渲染方法参数的内容 - {text: 'foo'}

我错过了什么?这可能吗?感谢。

1 个答案:

答案 0 :(得分:0)

render text: 'Foo'不是参数;这是一种将内容呈现给客户端的Rails方法。

ActiveSupport::Notificaitons.instrument("render", text: "foo")

是您将值“提交”到通知程序的方式。

ActiveSupport::Notifications.subscribe("render") do |name, start, finish, id, payload|
  text = payload[:text]
end

是您在订阅者中引用它的方式。