小编Mar*_*mer的帖子

使用ActiveSupport :: Notifications.subscribe订阅Rails例外

我正在探索ActiveSupport :: Notifications,并希望订阅Rails Exceptions,例如ActiveRecord :: ActiveRecordError异常.就像是:

ActiveSupport::Notifications.subscribe /ActiveRecordError/ do |*args|

  # More code here ...

end
Run Code Online (Sandbox Code Playgroud)

此订阅将存在于第三方gem中,因此我无法灵活地使用"in app"begin/rescue/end包装我的AcitveRecord调用.一个潜在的问题是,可以订阅的事件是否被考虑和/或处理?

ruby notifications activerecord exception-handling ruby-on-rails

7
推荐指数
1
解决办法
110
查看次数

扩展ActiveSupport :: Notifications.subscribe,instantiation.active_record挂钩

我正在探索ActiveSupport::Notifications,并希望了解更多信息'instantiation.active_record',而不仅仅是:record_count:class_name [1].例如,

ActiveSupport::Notifications.subscribe /instantiation.active_record/ do |*args|

  args.status #Database or ActiveRecord return status
  args.result #The actual result set returned
  args.etc .. #Any other info I can collect on the event

  # Additional code ...
end
Run Code Online (Sandbox Code Playgroud)

可以这样做,如果是这样,怎么办?

更新:感谢Tom和Pavel.部分挑战是,我正在构建第三方gem,它将分析主机应用程序的所有SQL返回,而无需修改其代码.基本上,将它插入Gemfile,做一个捆绑,然后离开.

我正在考虑扩展ActiveRecord :: Base,并使用方法append_info_to_payload,但到目前为止还没有在gem中工作.

作为一个例子,我想覆盖ActiveRecord :: Querying find_by_sql()方法的有效负载,如下所示:

payload = {
  record_count: result_set.length,
  class_name: name,
  result_set: result_set
}
Run Code Online (Sandbox Code Playgroud)

在测试和手动编辑我的本地ActiveRecord gem时,它通过ActiveSupport :: Notifications pub/sub提供完整的result_set.

答:所以,答案是使用该class_eval方法,并在ActiveRecord :: Querying中覆盖find_by_sql方法:

ActiveRecord::Querying.class_eval do
  def find_by_sql(sql, binds …
Run Code Online (Sandbox Code Playgroud)

ruby notifications activerecord instantiation activesupport

6
推荐指数
1
解决办法
199
查看次数

findRooms按名称或电子邮件地址

使用Microsoft Graph API,我想通过名称或电子邮件地址查找房间,例如:

https://graph.microsoft.com/beta/me/findRooms?$filter=startswith(mail,'cal_')
Run Code Online (Sandbox Code Playgroud)

要么

https://graph.microsoft.com/beta/me/findRooms?$filter=startswith(name,'Building 1')
Run Code Online (Sandbox Code Playgroud)

我们的房间不在RoomLists,有超过100间客房.

如何查询特定房间或房间子集?

outlook office365 microsoft-graph

4
推荐指数
1
解决办法
173
查看次数