gpt4 book ai didi

ruby-on-rails - 订阅 Rails 异常,使用 ActiveSupport::Notifications.subscribe

转载 作者:行者123 更新时间:2023-12-02 11:21:14 24 4
gpt4 key购买 nike

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

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

# More code here ...

end

此订阅将存在于第 3 方 gem 中,因此我无法灵活地将我的 AcitveRecord 调用与“应用程序内”开始/救援/结束进行包装。一个潜在的问题是,异常是否被视为和/或处理为可以订阅的事件?

最佳答案

异常不会作为 ActiveSupport 通知处理,可以在此处找到完整列表 https://guides.rubyonrails.org/active_support_instrumentation.html .

但是,您可以连接到 ActionController在 rails 上。

module YourGem
module Rails
class Railtie < ::Rails::Railtie
config.after_initialize do
ActiveSupport.on_load(:action_controller) do
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found

private

def record_not_found(exception)
ActiveSupport::Notifications.instrument "my.custom.event", this: :data do
# do your custom stuff here
end
end
end
end
end
end
end

使用这种方法,您甚至可能不需要 ActiveSupport 通知而只需在救援中执行您的代码?

https://api.rubyonrails.org/classes/Rails/Railtie.html

关于ruby-on-rails - 订阅 Rails 异常,使用 ActiveSupport::Notifications.subscribe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53603133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com