diff --git a/app/models/ahoy/event.rb b/app/models/ahoy/event.rb index c3f7caf9a..b38d3be0e 100644 --- a/app/models/ahoy/event.rb +++ b/app/models/ahoy/event.rb @@ -107,9 +107,11 @@ def self.delete_specific_events_and_associated_visits(delete_events: false, even { success: true, message: message } end - rescue => e + rescue ActiveRecord::StatementInvalid => e + error_message = delete_events ? "Deleting specific events failed due to: #{e.message}" : "Deleting associated visits of specific events failed due to: #{e.message}" + { success: false, message: "Database Error: #{e.message}" } + rescue StandardError => e error_message = delete_events ? "Deleting specific events failed due to: #{e.message}" : "Deleting associated visits of specific events failed due to: #{e.message}" - { success: false, message: e.message } end end diff --git a/app/models/api_action.rb b/app/models/api_action.rb index 2d523e10a..469e54002 100644 --- a/app/models/api_action.rb +++ b/app/models/api_action.rb @@ -110,7 +110,10 @@ def send_email(run_error_action = true) begin ApiActionMailer.send_email(self).deliver_now self.update(lifecycle_stage: 'complete', lifecycle_message: email) - rescue Exception => e + rescue Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPServerBusy => e + execute_error_actions("SMTP Error: #{e.message}") if run_error_action + raise + rescue StandardError => e execute_error_actions(e.message) if run_error_action raise end @@ -125,8 +128,11 @@ def send_web_request(run_error_action = true) else execute_error_actions(response.to_s) end - rescue => e - execute_error_actions(e.message) if run_error_action + rescue HTTParty::Error, SocketError => e + execute_error_actions("HTTP Error: #{e.message}") if run_error_action + raise + rescue StandardError => e + execute_error_actions(e.message) if run_error_action raise end end @@ -139,7 +145,10 @@ def custom_action(run_error_action = true) response = custom_api_action.run_custom_action(api_action: self, api_namespace: self.api_resource&.api_namespace, api_resource: self.api_resource, current_visit: Current.visit, current_user: Current.user) self.update(lifecycle_stage: 'complete', lifecycle_message: response.to_json) - rescue => e + rescue NameError, NoMethodError => e + execute_error_actions("Custom Action Error: #{e.message}") if run_error_action + raise + rescue StandardError => e execute_error_actions(e.message) if run_error_action raise end diff --git a/app/models/api_namespace.rb b/app/models/api_namespace.rb index 5f1bc94cb..f650bfcb8 100755 --- a/app/models/api_namespace.rb +++ b/app/models/api_namespace.rb @@ -212,14 +212,15 @@ def duplicate_api_namespace(duplicate_associations: false) new_executed_api_action.save! end end - end +end { success: true, data: new_api_namespace } end - rescue => e + rescue ActiveRecord::RecordInvalid => e + { success: false, message: "Validation Error: #{e.message}" } + rescue StandardError => e { success: false, message: e.message } end - end def export_as_json(include_associations: false) if include_associations @@ -355,7 +356,11 @@ def self.import_as_json(json_str) { success: true, data: new_api_namespace } end - rescue => e + rescue ActiveRecord::RecordInvalid => e + { success: false, message: "Validation Error: #{e.message}" } + rescue JSON::ParserError => e + { success: false, message: "JSON Parse Error: #{e.message}" } + rescue StandardError => e { success: false, message: e.message } end end