dm-transactions 1.0.0.rc2 → 1.0.0.rc3
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.
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/Rakefile +10 -10
- data/VERSION +1 -1
- data/dm-transactions.gemspec +6 -5
- data/lib/dm-transactions/adapters/dm-do-adapter.rb +2 -1
- data/lib/dm-transactions.rb +15 -16
- data/spec/isolated/require_after_setup_spec.rb +1 -3
- data/spec/isolated/require_before_setup_spec.rb +1 -3
- data/spec/isolated/require_spec.rb +5 -5
- data/spec/public/dm-transactions_spec.rb +40 -5
- data/spec/rcov.opts +1 -1
- data/tasks/spec.rake +3 -0
- metadata +8 -8
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/Rakefile
CHANGED
@@ -2,27 +2,27 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
|
4
4
|
begin
|
5
|
-
|
5
|
+
gem 'jeweler', '~> 1.4'
|
6
6
|
require 'jeweler'
|
7
7
|
|
8
8
|
Jeweler::Tasks.new do |gem|
|
9
|
-
gem.name =
|
10
|
-
gem.summary =
|
11
|
-
gem.description =
|
12
|
-
gem.email =
|
13
|
-
gem.homepage =
|
14
|
-
gem.authors = [
|
9
|
+
gem.name = 'dm-transactions'
|
10
|
+
gem.summary = 'Adds transaction support to datamapper'
|
11
|
+
gem.description = 'Makes transaction support available for adapters that support them'
|
12
|
+
gem.email = 'gamsnjaga@gmail.com'
|
13
|
+
gem.homepage = 'http://github.com/datamapper/%s' % gem.name
|
14
|
+
gem.authors = [ 'Dirkjan Bussink (dbussink)', 'Dan Kubb (dkubb)' ]
|
15
15
|
|
16
|
-
gem.
|
16
|
+
gem.rubyforge_project = 'datamapper'
|
17
17
|
|
18
|
-
gem.
|
18
|
+
gem.add_dependency 'dm-core', '~> 1.0.0.rc3'
|
19
19
|
|
20
|
+
gem.add_development_dependency 'rspec', '~> 1.3'
|
20
21
|
end
|
21
22
|
|
22
23
|
Jeweler::GemcutterTasks.new
|
23
24
|
|
24
25
|
FileList['tasks/**/*.rake'].each { |task| import task }
|
25
|
-
|
26
26
|
rescue LoadError
|
27
27
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
28
28
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0.
|
1
|
+
1.0.0.rc3
|
data/dm-transactions.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{dm-transactions}
|
8
|
-
s.version = "1.0.0.
|
8
|
+
s.version = "1.0.0.rc3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dirkjan Bussink (dbussink)", "Dan Kubb (dkubb)"]
|
12
|
-
s.date = %q{2010-05-
|
12
|
+
s.date = %q{2010-05-27}
|
13
13
|
s.description = %q{Makes transaction support available for adapters that support them}
|
14
14
|
s.email = %q{gamsnjaga@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -49,6 +49,7 @@ Gem::Specification.new do |s|
|
|
49
49
|
s.homepage = %q{http://github.com/datamapper/dm-transactions}
|
50
50
|
s.rdoc_options = ["--charset=UTF-8"]
|
51
51
|
s.require_paths = ["lib"]
|
52
|
+
s.rubyforge_project = %q{datamapper}
|
52
53
|
s.rubygems_version = %q{1.3.7}
|
53
54
|
s.summary = %q{Adds transaction support to datamapper}
|
54
55
|
s.test_files = [
|
@@ -64,14 +65,14 @@ Gem::Specification.new do |s|
|
|
64
65
|
s.specification_version = 3
|
65
66
|
|
66
67
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
67
|
-
s.add_runtime_dependency(%q<dm-core>, ["~> 1.0.0.
|
68
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 1.0.0.rc3"])
|
68
69
|
s.add_development_dependency(%q<rspec>, ["~> 1.3"])
|
69
70
|
else
|
70
|
-
s.add_dependency(%q<dm-core>, ["~> 1.0.0.
|
71
|
+
s.add_dependency(%q<dm-core>, ["~> 1.0.0.rc3"])
|
71
72
|
s.add_dependency(%q<rspec>, ["~> 1.3"])
|
72
73
|
end
|
73
74
|
else
|
74
|
-
s.add_dependency(%q<dm-core>, ["~> 1.0.0.
|
75
|
+
s.add_dependency(%q<dm-core>, ["~> 1.0.0.rc3"])
|
75
76
|
s.add_dependency(%q<rspec>, ["~> 1.3"])
|
76
77
|
end
|
77
78
|
end
|
@@ -75,7 +75,8 @@ module DataMapper
|
|
75
75
|
|
76
76
|
# @api private
|
77
77
|
def transactions
|
78
|
-
Thread.current[:dm_transactions]
|
78
|
+
Thread.current[:dm_transactions] ||= {}
|
79
|
+
Thread.current[:dm_transactions][object_id] ||= []
|
79
80
|
end
|
80
81
|
|
81
82
|
# Retrieve the current connection for this Adapter.
|
data/lib/dm-transactions.rb
CHANGED
@@ -390,10 +390,10 @@ module DataMapper
|
|
390
390
|
|
391
391
|
def self.include_transaction_api
|
392
392
|
[ :Repository, :Model, :Resource ].each do |name|
|
393
|
-
DataMapper.const_get(name).send(:include,
|
393
|
+
DataMapper.const_get(name).send(:include, const_get(name))
|
394
394
|
end
|
395
|
-
|
396
|
-
Adapters.include_transaction_api(ActiveSupport::Inflector.demodulize(
|
395
|
+
Adapters::AbstractAdapter.descendants.each do |adapter_class|
|
396
|
+
Adapters.include_transaction_api(ActiveSupport::Inflector.demodulize(adapter_class.name))
|
397
397
|
end
|
398
398
|
end
|
399
399
|
|
@@ -401,23 +401,22 @@ module DataMapper
|
|
401
401
|
|
402
402
|
module Adapters
|
403
403
|
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
require transaction_extensions(const_name)
|
404
|
+
def self.include_transaction_api(const_name)
|
405
|
+
require transaction_extensions(const_name)
|
406
|
+
if Transaction.const_defined?(const_name)
|
408
407
|
adapter = const_get(const_name)
|
409
|
-
|
410
|
-
adapter.send(:include, transaction_module(const_name))
|
411
|
-
end
|
412
|
-
rescue LoadError
|
413
|
-
# Silently ignore the fact that no adapter extensions could be required
|
414
|
-
# This means that the adapter in use doesn't support transactions
|
408
|
+
adapter.send(:include, transaction_module(const_name))
|
415
409
|
end
|
410
|
+
rescue LoadError
|
411
|
+
# Silently ignore the fact that no adapter extensions could be required
|
412
|
+
# This means that the adapter in use doesn't support transactions
|
413
|
+
end
|
416
414
|
|
417
|
-
|
418
|
-
|
419
|
-
|
415
|
+
def self.transaction_module(const_name)
|
416
|
+
Transaction.const_get(const_name)
|
417
|
+
end
|
420
418
|
|
419
|
+
class << self
|
421
420
|
private
|
422
421
|
|
423
422
|
# @api private
|
@@ -1,15 +1,13 @@
|
|
1
1
|
require 'spec'
|
2
2
|
require 'isolated/require_spec'
|
3
3
|
require 'dm-core/spec/setup'
|
4
|
-
require 'dm-core/spec/lib/adapter_helpers'
|
5
4
|
|
6
5
|
# To really test this behavior, this spec needs to be run in isolation and not
|
7
6
|
# as part of the typical rake spec run, which requires dm-transactions upfront
|
8
7
|
|
9
|
-
if %w[postgres mysql sqlite oracle sqlserver].include?(ENV['ADAPTER'])
|
8
|
+
if %w[ postgres mysql sqlite oracle sqlserver ].include?(ENV['ADAPTER'])
|
10
9
|
|
11
10
|
describe "require 'dm-transactions after calling DataMapper.setup" do
|
12
|
-
extend DataMapper::Spec::Adapters::Helpers
|
13
11
|
|
14
12
|
before(:all) do
|
15
13
|
@adapter = DataMapper::Spec.adapter
|
@@ -1,15 +1,13 @@
|
|
1
1
|
require 'spec'
|
2
2
|
require 'isolated/require_spec'
|
3
3
|
require 'dm-core/spec/setup'
|
4
|
-
require 'dm-core/spec/lib/adapter_helpers'
|
5
4
|
|
6
5
|
# To really test this behavior, this spec needs to be run in isolation and not
|
7
6
|
# as part of the typical rake spec run, which requires dm-transactions upfront
|
8
7
|
|
9
|
-
if %w[postgres mysql sqlite oracle sqlserver].include?(ENV['ADAPTER'])
|
8
|
+
if %w[ postgres mysql sqlite oracle sqlserver ].include?(ENV['ADAPTER'])
|
10
9
|
|
11
10
|
describe "require 'dm-transactions' before calling DataMapper.setup" do
|
12
|
-
extend DataMapper::Spec::Adapters::Helpers
|
13
11
|
|
14
12
|
before(:all) do
|
15
13
|
require 'dm-transactions'
|
@@ -1,15 +1,15 @@
|
|
1
1
|
shared_examples_for "require 'dm-transactions'" do
|
2
2
|
|
3
|
-
%w[Repository Model Resource].each do |name|
|
3
|
+
%w[ Repository Model Resource ].each do |name|
|
4
4
|
it "should include the transaction api in DataMapper::#{name}" do
|
5
|
-
(DataMapper.const_get(name) < DataMapper::Transaction.const_get(name)).should
|
5
|
+
(DataMapper.const_get(name) < DataMapper::Transaction.const_get(name)).should be(true)
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should include the transaction api into the adapter" do
|
10
|
-
@adapter.respond_to?(:push_transaction ).should
|
11
|
-
@adapter.respond_to?(:pop_transaction ).should
|
12
|
-
@adapter.respond_to?(:current_transaction).should
|
10
|
+
@adapter.respond_to?(:push_transaction ).should be(true)
|
11
|
+
@adapter.respond_to?(:pop_transaction ).should be(true)
|
12
|
+
@adapter.respond_to?(:current_transaction).should be(true)
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
@@ -93,10 +93,18 @@ describe DataMapper::Resource, 'Transactions' do
|
|
93
93
|
it_should_behave_like 'A Resource supporting Strategic Eager Loading'
|
94
94
|
end
|
95
95
|
|
96
|
-
|
97
|
-
|
96
|
+
describe '#transaction' do
|
97
|
+
before :all do
|
98
|
+
class ::Author
|
99
|
+
include DataMapper::Resource
|
100
|
+
|
101
|
+
property :name, String, :key => true
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
supported_by :postgres, :mysql, :sqlite, :oracle, :sqlserver do
|
98
106
|
before do
|
99
|
-
@user_model.
|
107
|
+
@user_model.destroy!
|
100
108
|
end
|
101
109
|
|
102
110
|
it 'should have access to resources presisted before the transaction' do
|
@@ -134,8 +142,8 @@ describe DataMapper::Resource, 'Transactions' do
|
|
134
142
|
@txn = nil
|
135
143
|
|
136
144
|
def doit
|
137
|
-
@user_model.transaction do
|
138
|
-
@txn =
|
145
|
+
@user_model.transaction do |transaction|
|
146
|
+
@txn = transaction
|
139
147
|
return
|
140
148
|
end
|
141
149
|
end
|
@@ -148,6 +156,33 @@ describe DataMapper::Resource, 'Transactions' do
|
|
148
156
|
it 'should return the last statement in the transaction block' do
|
149
157
|
@user_model.transaction { 1 }.should == 1
|
150
158
|
end
|
159
|
+
|
160
|
+
with_alternate_adapter do
|
161
|
+
before :all do
|
162
|
+
class ::Article
|
163
|
+
include DataMapper::Resource
|
164
|
+
|
165
|
+
def self.default_repository_name
|
166
|
+
:alternate
|
167
|
+
end
|
168
|
+
|
169
|
+
property :title, String, :key => true
|
170
|
+
end
|
171
|
+
|
172
|
+
DataMapper.auto_migrate!(:alternate)
|
173
|
+
end
|
174
|
+
|
175
|
+
it 'should work with other repositories' do
|
176
|
+
expect {
|
177
|
+
DataMapper.repository.transaction.commit do
|
178
|
+
Author.create(:name => 'Dan Kubb')
|
179
|
+
|
180
|
+
# save a resource to another repository
|
181
|
+
Article.create(:title => 'DataMapper Rocks!')
|
182
|
+
end
|
183
|
+
}.should_not raise_error
|
184
|
+
end
|
185
|
+
end
|
151
186
|
end
|
152
187
|
end
|
153
188
|
end
|
data/spec/rcov.opts
CHANGED
data/tasks/spec.rake
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-transactions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 977940572
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 1.0.0.
|
10
|
+
- rc3
|
11
|
+
version: 1.0.0.rc3
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Dirkjan Bussink (dbussink)
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-05-
|
20
|
+
date: 2010-05-27 00:00:00 -07:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -28,13 +28,13 @@ dependencies:
|
|
28
28
|
requirements:
|
29
29
|
- - ~>
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
hash:
|
31
|
+
hash: 977940572
|
32
32
|
segments:
|
33
33
|
- 1
|
34
34
|
- 0
|
35
35
|
- 0
|
36
|
-
-
|
37
|
-
version: 1.0.0.
|
36
|
+
- rc3
|
37
|
+
version: 1.0.0.rc3
|
38
38
|
type: :runtime
|
39
39
|
version_requirements: *id001
|
40
40
|
- !ruby/object:Gem::Dependency
|
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
121
|
version: 1.3.1
|
122
122
|
requirements: []
|
123
123
|
|
124
|
-
rubyforge_project:
|
124
|
+
rubyforge_project: datamapper
|
125
125
|
rubygems_version: 1.3.7
|
126
126
|
signing_key:
|
127
127
|
specification_version: 3
|