Compare commits

...

3 Commits

Author SHA1 Message Date
Charlie Somerville
56d2614309 3.2.19.github5 2014-09-26 16:58:46 +10:00
Rob Sanheim
0afd326c36 Move commit exception handling to a method so we can override
It looks like these methods all get included into the AbstractAdapter,
and then in github/github we have our own Adapter as an internal gem.

So this should be easy enough to override in our vendor'ed adapter.

This will allow us to still grab errors that happen in `after_commit`
which would normally be swallowed in Rails 3.0 (and beyond).

Conflicts:
	activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
2014-09-26 16:25:08 +10:00
Rob Sanheim
c957f5f609 only _run_commit_callbacks when destroyed or persisted:
should fix issues with commit callbacks getting called when the record
is not persisted (yet) in a inner transaction or due to some other edge
case.

see also caabed6c76

Conflicts:
	activerecord/lib/active_record/transactions.rb
2014-09-26 16:19:59 +10:00
3 changed files with 8 additions and 3 deletions

View File

@@ -1 +1 @@
3.2.19.github4
3.2.19.github5

View File

@@ -371,7 +371,7 @@ module ActiveRecord
begin
record.committed!
rescue Exception => e
record.logger.error(e) if record.respond_to?(:logger) && record.logger
handle_commit_exceptions(record, e)
end
end
end
@@ -385,6 +385,11 @@ module ActiveRecord
row = result.rows.first
row && row.first
end
# Handle any exceptions caught trying to send the commit message to a record
def handle_commit_exceptions(record, e)
record.logger.error(e) if record.respond_to?(:logger) && record.logger
end
end
end
end

View File

@@ -278,7 +278,7 @@ module ActiveRecord
# Call the after_commit callbacks
def committed! #:nodoc:
run_callbacks :commit
run_callbacks :commit if destroyed? || persisted?
ensure
@_start_transaction_state.clear
end