From d3166f2c5a27bf4d1602ac92273236ccc92019ab Mon Sep 17 00:00:00 2001 From: f Date: Thu, 30 Mar 2023 13:07:25 -0300 Subject: [PATCH 1/2] feat: poder serializar las excepciones --- config/initializers/que.rb | 8 +++++++ .../serializers/exception_serializer.rb | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 config/initializers/que.rb create mode 100644 lib/active_job/serializers/exception_serializer.rb diff --git a/config/initializers/que.rb b/config/initializers/que.rb new file mode 100644 index 00000000..579f57d5 --- /dev/null +++ b/config/initializers/que.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +ActiveJob::Serializers.add_serializers ActiveJob::Serializers::ExceptionSerializer + +# Notificar los errores +Que.error_notifier = proc do |error, job| + ExceptionNotifier.notify_exception(error, data: job) +end diff --git a/lib/active_job/serializers/exception_serializer.rb b/lib/active_job/serializers/exception_serializer.rb new file mode 100644 index 00000000..42b55835 --- /dev/null +++ b/lib/active_job/serializers/exception_serializer.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'json/add/exception' + +module ActiveJob + module Serializers + class ExceptionSerializer < ObjectSerializer # :nodoc: + def serialize(ex) + super('value' => { 'class' => ex.class.name, 'exception' => ex.as_json }) + end + + def deserialize(hash) + hash.dig('value', 'class').constantize.json_create(hash.dig('value', 'exception')) + end + + private + def klass + Exception + end + end + end +end From 691b87b9116a623add90f4add0d0d03e7378ffa0 Mon Sep 17 00:00:00 2001 From: f Date: Thu, 30 Mar 2023 13:11:37 -0300 Subject: [PATCH 2/2] fixup! feat: poder serializar las excepciones --- {lib => app/lib}/active_job/serializers/exception_serializer.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {lib => app/lib}/active_job/serializers/exception_serializer.rb (100%) diff --git a/lib/active_job/serializers/exception_serializer.rb b/app/lib/active_job/serializers/exception_serializer.rb similarity index 100% rename from lib/active_job/serializers/exception_serializer.rb rename to app/lib/active_job/serializers/exception_serializer.rb