transaction-simple 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Ruwiki
4
+ # Copyright � 2002 - 2003, Digikata and HaloStatue
5
+ # Alan Chen (alan@digikata.com)
6
+ # Austin Ziegler (ruwiki@halostatue.ca)
7
+ #
8
+ # Licensed under the same terms as Ruby.
9
+ #
10
+ # $Id: testall.rb,v 1.1 2005/05/05 16:16:49 austin Exp $
11
+ #++
12
+
13
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
14
+
15
+ $stderr.puts "Checking for test cases:"
16
+ Dir['tc_*.rb'].each do |testcase|
17
+ $stderr.puts "\t#{testcase}"
18
+ load testcase
19
+ end
20
+ $stderr.puts " "
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.1
2
+ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: transaction-simple
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.2.0
7
- date: 2004-11-03
6
+ version: 1.3.0
7
+ date: 2005-05-05
8
8
  summary: Simple object transaction support for Ruby.
9
9
  require_paths:
10
10
  - lib
11
- author: Austin Ziegler
12
11
  email: transaction-simple@halostatue.ca
13
12
  homepage: http://rubyforge.org/projects/trans-simple
14
13
  rubyforge_project: trans-simple
15
- description: ''
14
+ description: "Transaction::Simple provides a generic way to add active transaction support to
15
+ objects. The transaction methods added by this module will work with most
16
+ objects, excluding those that cannot be Marshal-ed (bindings, procedure objects,
17
+ IO instances, or singleton objects)."
16
18
  autorequire: transaction/simple
17
19
  default_executable:
18
20
  bindir: bin
@@ -25,6 +27,8 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
27
  version: 1.8.1
26
28
  version:
27
29
  platform: ruby
30
+ authors:
31
+ - Austin Ziegler
28
32
  files:
29
33
  - Changelog
30
34
  - Install
@@ -33,22 +37,29 @@ files:
33
37
  - Readme
34
38
  - tests
35
39
  - lib/transaction
40
+ - lib/transaction/simple
36
41
  - lib/transaction/simple.rb
37
- - tests/tests.rb
38
- - README
39
- - ChangeLog
42
+ - lib/transaction/simple/group.rb
43
+ - lib/transaction/simple/threadsafe
44
+ - lib/transaction/simple/threadsafe.rb
45
+ - lib/transaction/simple/threadsafe/group.rb
46
+ - tests/tc_transaction_simple.rb
47
+ - tests/tc_transaction_simple_group.rb
48
+ - tests/tc_transaction_simple_threadsafe.rb
49
+ - tests/testall.rb
40
50
  test_files:
41
- - tests/tests.rb
51
+ - tests/tc_transaction_simple.rb
52
+ - tests/tc_transaction_simple_group.rb
53
+ - tests/tc_transaction_simple_threadsafe.rb
42
54
  rdoc_options:
43
55
  - "--title"
44
- - "Transaction::Simple -- Simple object transaction support"
56
+ - "Transaction::Simple -- Active Object Transaction Support for Ruby"
45
57
  - "--main"
46
58
  - Transaction::Simple
47
59
  - "--line-numbers"
48
60
  extra_rdoc_files:
49
- - README
50
- - ChangeLog
51
- - Install
61
+ - Readme
62
+ - Changelog
52
63
  executables: []
53
64
  extensions: []
54
65
  requirements: []
data/ChangeLog DELETED
@@ -1,20 +0,0 @@
1
- $Id: Changelog,v 1.2 2004/09/14 18:46:15 austin Exp $
2
-
3
- == Transaction::Simple 1.2.0
4
- * Added a RubyGem.
5
- * Added a block form of Transaction::Simple.
6
-
7
- == Transaction::Simple 1.1.1
8
- * Cleaned up some documentation.
9
-
10
- == Transaction::Simple 1.1
11
- * Added Transaction::Simple::ThreadSafe for truly atomic and thread-safe
12
- transactions.
13
- * Fixed the description of Transaction::Simple to note that it is *not* atomic
14
- because it is not necessarily thread-safe.
15
- * Added support for named transactions. Named transactions can be used to make
16
- checkpoints that can be committed, aborted, or rewound without explicitly
17
- committing, aborting, or rewinding the intervening transactions.
18
-
19
- == Transaction::Simple 1.0
20
- * Created. Initial release.
data/README DELETED
@@ -1,110 +0,0 @@
1
- Transaction::Simple for Ruby
2
- Simple object transaction support for Ruby
3
-
4
- Introduction
5
- ------------
6
- Transaction::Simple provides a generic way to add active transactional support
7
- to objects. The transaction methods added by this module will work with most
8
- objects, excluding those that cannot be Marshal-ed (bindings, procedure
9
- objects, IO instances, or singleton objects).
10
-
11
- The transactions supported by Transaction::Simple are not backend transaction;
12
- that is, they have nothing to do with any sort of data store. They are "live"
13
- transactions occurring in memory and in the object itself. This is to allow
14
- "test" changes to be made to an object before making the changes permanent.
15
-
16
- Transaction::Simple can handle an "infinite" number of transactional levels
17
- (limited only by memory). If I open two transactions, commit the first, but
18
- abort the second, the object will revert to the original version.
19
-
20
- Transaction::Simple supports "named" transactions, so that multiple levels of
21
- transactions can be committed, aborted, or rewound by referring to the
22
- appropriate name of the transaction. Names may be any object except nil.
23
-
24
- Copyright: Copyright � 2003 by Austin Ziegler
25
- Version: 1.11
26
- Licence: MIT-Style
27
-
28
- Thanks to David Black and Mauricio Fern�ndez for their help with this library.
29
-
30
- Usage
31
- -----
32
- include 'transaction/simple'
33
-
34
- v = "Hello, you." # => "Hello, you."
35
- v.extend(Transaction::Simple) # => "Hello, you."
36
-
37
- v.start_transaction # => ... (a Marshal string)
38
- v.transaction_open? # => true
39
- v.gsub!(/you/, "world") # => "Hello, world."
40
-
41
- v.rewind_transaction # => "Hello, you."
42
- v.transaction_open? # => true
43
-
44
- v.gsub!(/you/, "HAL") # => "Hello, HAL."
45
- v.abort_transaction # => "Hello, you."
46
- v.transaction_open? # => false
47
-
48
- v.start_transaction # => ... (a Marshal string)
49
- v.start_transaction # => ... (a Marshal string)
50
-
51
- v.transaction_open? # => true
52
- v.gsub!(/you/, "HAL") # => "Hello, HAL."
53
-
54
- v.commit_transaction # => "Hello, HAL."
55
- v.transaction_open? # => true
56
- v.abort_transaction # => "Hello, you."
57
- v.transaction_open? # => false
58
-
59
- Named Transaction Usage
60
- -----------------------
61
- v = "Hello, you." # => "Hello, you."
62
- v.extend(Transaction::Simple) # => "Hello, you."
63
-
64
- v.start_transaction(:first) # => ... (a Marshal string)
65
- v.transaction_open? # => true
66
- v.transaction_open?(:first) # => true
67
- v.transaction_open?(:second) # => false
68
- v.gsub!(/you/, "world") # => "Hello, world."
69
-
70
- v.start_transaction(:second) # => ... (a Marshal string)
71
- v.gsub!(/world/, "HAL") # => "Hello, HAL."
72
- v.rewind_transaction(:first) # => "Hello, you."
73
- v.transaction_open? # => true
74
- v.transaction_open?(:first) # => true
75
- v.transaction_open?(:second) # => false
76
-
77
- v.gsub!(/you/, "world") # => "Hello, world."
78
- v.start_transaction(:second) # => ... (a Marshal string)
79
- v.gsub!(/world/, "HAL") # => "Hello, HAL."
80
- v.transaction_name # => :second
81
- v.abort_transaction(:first) # => "Hello, you."
82
- v.transaction_open? # => false
83
-
84
- v.start_transaction(:first) # => ... (a Marshal string)
85
- v.gsub!(/you/, "world") # => "Hello, world."
86
- v.start_transaction(:second) # => ... (a Marshal string)
87
- v.gsub!(/world/, "HAL") # => "Hello, HAL."
88
-
89
- v.commit_transaction(:first) # => "Hello, HAL."
90
- v.transaction_open? # => false
91
-
92
- Contraindications
93
- -----------------
94
- While Transaction::Simple is very useful, it has some severe limitations that
95
- must be understood. Transaction::Simple:
96
-
97
- * uses Marshal. Thus, any object which cannot be Marshal-ed cannot use
98
- Transaction::Simple.
99
- * does not manage resources. Resources external to the object and its instance
100
- variables are not managed at all. However, all instance variables and
101
- objects "belonging" to those instance variables are managed. If there are
102
- object reference counts to be handled, Transaction::Simple will probably
103
- cause problems.
104
- * is not thread-safe. In the ACID ("atomic, consistent, isolated, durable")
105
- test, Transaction::Simple provides C and D, but it is up to the user of
106
- Transaction::Simple to provide isolation. Transactions should be considered
107
- "critical sections" in multi-threaded applications. Thread safety can be
108
- ensured with Transaction::Simple::ThreadSafe.
109
- * does not maintain Object#__id__ values on rewind or abort. This may change
110
- for future versions that will be Ruby 1.8 or better only.