From 94b23d46b7036741e5280ff9b5a07400dc221136 Mon Sep 17 00:00:00 2001 From: Ari Karim Date: Tue, 27 May 2025 14:15:39 +0300 Subject: [PATCH 1/5] Enhance error handling in manager.rb by logging error messages and classes during transition failures --- lib/workflower/manager.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/workflower/manager.rb b/lib/workflower/manager.rb index 5d6f02b..c7c5ddb 100644 --- a/lib/workflower/manager.rb +++ b/lib/workflower/manager.rb @@ -61,7 +61,9 @@ module Workflower @calling_model.assign_attributes flow.updateable_attributes(@calling_model) flow.call_after_transition(@calling_model) true - rescue Exception + rescue Exception => e + puts "ERROR MESSAGE: #{e.message}" + puts "ERROR CLASS: #{e}" @calling_model.errors.add(@calling_model.workflower_state_column_name, :transition_faild) false end From c69f4752c10aff9b1ac602eee662be6f324e1c39 Mon Sep 17 00:00:00 2001 From: Ari Karim Date: Tue, 27 May 2025 14:16:08 +0300 Subject: [PATCH 2/5] Refine error logging in manager.rb to simplify error output during transition failures --- lib/workflower/manager.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/workflower/manager.rb b/lib/workflower/manager.rb index c7c5ddb..ec491eb 100644 --- a/lib/workflower/manager.rb +++ b/lib/workflower/manager.rb @@ -63,7 +63,7 @@ module Workflower true rescue Exception => e puts "ERROR MESSAGE: #{e.message}" - puts "ERROR CLASS: #{e}" + puts "ERROR: #{e}" @calling_model.errors.add(@calling_model.workflower_state_column_name, :transition_faild) false end From 7cb759c505d0636dbb9a59234d8779c4a797b4bc Mon Sep 17 00:00:00 2001 From: Ari Karim Date: Tue, 27 May 2025 14:51:04 +0300 Subject: [PATCH 3/5] Add configuration management to Workflower module with logger support --- lib/workflower.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/workflower.rb b/lib/workflower.rb index e8232ee..88aaf24 100644 --- a/lib/workflower.rb +++ b/lib/workflower.rb @@ -3,7 +3,25 @@ require_relative "workflower/version" require "workflower/manager" require "workflower/acts_as_workflower" + module Workflower class Error < StandardError; end - # Your code goes here... + + class << self + def configuration + @configuration ||= Configuration.new + end + + def configure + yield(configuration) + end + end + + class Configuration + attr_accessor :logger + + def initialize + @logger = nil + end + end end From 99752aec39633edc7a0292c62cf8b4786c1cc0e2 Mon Sep 17 00:00:00 2001 From: Ari Karim Date: Tue, 27 May 2025 14:51:18 +0300 Subject: [PATCH 4/5] Update error logging in manager.rb to conditionally log detailed error messages based on logger level; increment version to 0.2.7 --- lib/workflower/manager.rb | 8 +++++--- lib/workflower/version.rb | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/workflower/manager.rb b/lib/workflower/manager.rb index ec491eb..8d3c108 100644 --- a/lib/workflower/manager.rb +++ b/lib/workflower/manager.rb @@ -37,7 +37,6 @@ module Workflower end def possible_transitions - # @transitions.where(state: @current_state).where("sequence = :seq OR sequence = :seq_plus", seq: @current_sequence, seq_plus: @current_sequence + 1).order("sequence ASC") || [] @transitions.select do |item| item[:state] == @current_state && (item[:sequence] == @current_sequence || item[:sequence] == @current_sequence + 1) end @@ -62,8 +61,11 @@ module Workflower flow.call_after_transition(@calling_model) true rescue Exception => e - puts "ERROR MESSAGE: #{e.message}" - puts "ERROR: #{e}" + # if the log level is set to debug, we want to log the error + logger = Workflower.configuration.logger + if logger.present? && logger.level == Logger::DEBUG + logger.debug("Error during transition: #{e.message}") + end @calling_model.errors.add(@calling_model.workflower_state_column_name, :transition_faild) false end diff --git a/lib/workflower/version.rb b/lib/workflower/version.rb index 95767ed..986ba7d 100644 --- a/lib/workflower/version.rb +++ b/lib/workflower/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Workflower - VERSION = "0.2.6" + VERSION = "0.2.7" end From 44018a30169544ca099860ef1e808d0a7a529400 Mon Sep 17 00:00:00 2001 From: Ari Karim Date: Tue, 27 May 2025 14:58:23 +0300 Subject: [PATCH 5/5] Refactor error logging in manager.rb to always log transition errors if logger is present, simplifying the conditional check. --- lib/workflower/manager.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/workflower/manager.rb b/lib/workflower/manager.rb index 8d3c108..95b75c3 100644 --- a/lib/workflower/manager.rb +++ b/lib/workflower/manager.rb @@ -63,9 +63,8 @@ module Workflower rescue Exception => e # if the log level is set to debug, we want to log the error logger = Workflower.configuration.logger - if logger.present? && logger.level == Logger::DEBUG - logger.debug("Error during transition: #{e.message}") - end + logger.debug("Error during transition: #{e.message}") if logger.present? + @calling_model.errors.add(@calling_model.workflower_state_column_name, :transition_faild) false end