From 8dde3542dcb149d8e911bc0a1c1b74b3cdaf01d9 Mon Sep 17 00:00:00 2001 From: Nicolas Alexandre Date: Thu, 2 May 2024 09:55:37 +0200 Subject: [PATCH] feat(logger): logs raised errors in dev mode --- .../forest_admin_error_subscriber.rb | 7 +++++++ packages/forest_admin_rails/config/routes.rb | 6 ++++-- .../lib/forest_admin_rails/engine.rb | 16 ++++++++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 packages/forest_admin_rails/config/initializers/forest_admin_error_subscriber.rb diff --git a/packages/forest_admin_rails/config/initializers/forest_admin_error_subscriber.rb b/packages/forest_admin_rails/config/initializers/forest_admin_error_subscriber.rb new file mode 100644 index 000000000..11b614584 --- /dev/null +++ b/packages/forest_admin_rails/config/initializers/forest_admin_error_subscriber.rb @@ -0,0 +1,7 @@ +class ForestAdminErrorSubscriber + def report(error, _handled:, _severity:, _context:, _source: nil) + return if Facades::Container.cache(:is_production) + + ForestAdminAgent::Facades::Container.logger.log('Debug', error.full_message) + end +end diff --git a/packages/forest_admin_rails/config/routes.rb b/packages/forest_admin_rails/config/routes.rb index 81600ce2c..4288624e0 100644 --- a/packages/forest_admin_rails/config/routes.rb +++ b/packages/forest_admin_rails/config/routes.rb @@ -1,5 +1,7 @@ ForestAdminRails::Engine.routes.draw do - ForestAdminAgent::Http::Router.routes.each do |name, agent_route| - match agent_route[:uri], to: 'forest#index', via: agent_route[:method], as: name, route_alias: name + Rails.error.handle(ForestAdminDatasourceToolkit::Exceptions::ForestException) do + ForestAdminAgent::Http::Router.routes.each do |name, agent_route| + match agent_route[:uri], to: 'forest#index', via: agent_route[:method], as: name, route_alias: name + end end end diff --git a/packages/forest_admin_rails/lib/forest_admin_rails/engine.rb b/packages/forest_admin_rails/lib/forest_admin_rails/engine.rb index c0a809203..7929f1a44 100644 --- a/packages/forest_admin_rails/lib/forest_admin_rails/engine.rb +++ b/packages/forest_admin_rails/lib/forest_admin_rails/engine.rb @@ -22,11 +22,19 @@ module ForestAdminRails class Engine < ::Rails::Engine isolate_namespace ForestAdminRails + extend ActiveSupport::Concern + + initializer 'forest_admin_rails.error_subscribe' do + Rails.error.subscribe(ForestAdminErrorSubscriber.new) + end + config.after_initialize do - agent_factory = ForestAdminAgent::Builder::AgentFactory.instance - agent_factory.setup(ForestAdminRails.config) - load_configuration - load_cors + Rails.error.handle(ForestAdminDatasourceToolkit::Exceptions::ForestException) do + agent_factory = ForestAdminAgent::Builder::AgentFactory.instance + agent_factory.setup(ForestAdminRails.config) + load_configuration + load_cors + end end def load_configuration