aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters
diff options
context:
space:
mode:
authorDennis Taylor <dennis.taylor@clio.com>2017-07-05 15:21:25 -0700
committerDennis Taylor <dennis.taylor@clio.com>2017-07-05 17:02:59 -0700
commitad0bde58d4e5dd3686fdbdc21c7e4b6d71e371e4 (patch)
tree2d267c1ae61cb23758cc4ed6ff1edf4a9d054460 /activerecord/lib/active_record/connection_adapters
parentc8ce3459648ce0f86646b564ce1c0bb16a4b48eb (diff)
downloadrails-ad0bde58d4e5dd3686fdbdc21c7e4b6d71e371e4.tar.gz
rails-ad0bde58d4e5dd3686fdbdc21c7e4b6d71e371e4.tar.bz2
rails-ad0bde58d4e5dd3686fdbdc21c7e4b6d71e371e4.zip
Don't translate non-database exceptions.
The AbstractAdapter will translate all StandardErrors generated during the course of a query into ActiveRecord::StatementInvalids. Unfortunately, it'll also mangle non-database-related errors generated in ActiveSupport::Notification callbacks after the query has successfully completed. This should prevent it from translating errors from ActiveSupport::Notifications.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_adapter.rb6
1 files changed, 4 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index cfe1892d78..30b29e7007 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -576,12 +576,14 @@ module ActiveRecord
type_casted_binds: type_casted_binds,
statement_name: statement_name,
connection_id: object_id) do
+ begin
@lock.synchronize do
yield
end
+ rescue => e
+ raise translate_exception_class(e, sql)
end
- rescue => e
- raise translate_exception_class(e, sql)
+ end
end
def translate_exception(exception, message)