我正在探索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
我正在探索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) 使用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间客房.
如何查询特定房间或房间子集?