Permalink
Browse files

Deprecation: object transactions warning.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5405 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 7ca2b65 commit 88d9b32496140c9a00b8c1e1e55c48bd6f653756 @jeremy jeremy committed Nov 2, 2006
Showing with 24 additions and 11 deletions.
  1. +2 −0 activerecord/CHANGELOG
  2. +14 −5 activerecord/lib/active_record/transactions.rb
  3. +8 −6 activerecord/test/transactions_test.rb
View
@@ -1,5 +1,7 @@
*SVN*
+* Deprecation: object transactions warning. [Jeremy Kemper]
+
* has_one :dependent => :nullify ignores nil associates. #6528 [janovetz, Jeremy Kemper]
* Oracle: resolve test failures, use prefetched primary key for inserts, check for null defaults. Factor out some common methods from all adapters. #6515 [Michael Schoen]
@@ -55,7 +55,7 @@ def self.included(base)
# will happen under the protected cover of a transaction. So you can use validations to check for values that the transaction
# depend on or you can raise exceptions in the callbacks to rollback.
#
- # == Object-level transactions
+ # == Object-level transactions (deprecated)
#
# You can enable object-level transactions for Active Record objects, though. You do this by naming each of the Active Records
# that you want to enable object-level transactions for, like this:
@@ -65,8 +65,14 @@ def self.included(base)
# mary.deposit(100)
# end
#
- # If the transaction fails, David and Mary will be returned to their pre-transactional state. No money will have changed hands in
- # neither object nor database.
+ # If the transaction fails, David and Mary will be returned to their
+ # pre-transactional state. No money will have changed hands in neither
+ # object nor database.
+ #
+ # However, useful state such as validation errors are also rolled back,
+ # limiting the usefulness of this feature. As such it is deprecated in
+ # Rails 1.2 and will be removed in the next release. Install the
+ # object_transactions plugin if you wish to continue using it.
#
# == Exception handling
#
@@ -80,8 +86,11 @@ def transaction(*objects, &block)
increment_open_transactions
begin
- objects.each { |o| o.extend(Transaction::Simple) }
- objects.each { |o| o.start_transaction }
+ unless objects.empty?
+ ActiveSupport::Deprecation.warn "Object transactions are deprecated and will be removed from Rails 2.0. See http://www.rubyonrails.org/deprecation for details.", caller
+ objects.each { |o| o.extend(Transaction::Simple) }
+ objects.each { |o| o.start_transaction }
+ end
result = connection.transaction(Thread.current['start_db_transaction'], &block)
@@ -90,12 +90,14 @@ def test_failing_with_object_rollback
assert !@first.approved?, "First should be unapproved initially"
begin
- Topic.transaction(@first, @second) do
- @first.approved = true
- @second.approved = false
- @first.save
- @second.save
- raise "Bad things!"
+ assert_deprecated /Object transactions/ do
+ Topic.transaction(@first, @second) do
+ @first.approved = true
+ @second.approved = false
+ @first.save
+ @second.save
+ raise "Bad things!"
+ end
end
rescue
# caught it

0 comments on commit 88d9b32

Please sign in to comment.