dm-is-versioned 1.1.0 → 1.2.0.rc1
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 +8 -8
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/dm-is-versioned.gemspec +22 -26
- data/lib/dm-is-versioned/is/versioned.rb +3 -4
- data/spec/versioned_spec.rb +24 -16
- metadata +65 -31
data/Gemfile
CHANGED
@@ -5,26 +5,26 @@ source 'http://rubygems.org'
|
|
5
5
|
SOURCE = ENV.fetch('SOURCE', :git).to_sym
|
6
6
|
REPO_POSTFIX = SOURCE == :path ? '' : '.git'
|
7
7
|
DATAMAPPER = SOURCE == :path ? Pathname(__FILE__).dirname.parent : 'http://github.com/datamapper'
|
8
|
-
DM_VERSION = '~> 1.
|
9
|
-
DO_VERSION = '~> 0.10.
|
8
|
+
DM_VERSION = '~> 1.2.0.rc1'
|
9
|
+
DO_VERSION = '~> 0.10.6'
|
10
10
|
DM_DO_ADAPTERS = %w[ sqlite postgres mysql oracle sqlserver ]
|
11
11
|
|
12
12
|
gem 'dm-core', DM_VERSION, SOURCE => "#{DATAMAPPER}/dm-core#{REPO_POSTFIX}"
|
13
13
|
|
14
14
|
group :development do
|
15
15
|
|
16
|
-
gem 'jeweler', '~> 1.
|
17
|
-
gem 'rake', '~> 0.
|
18
|
-
gem 'rspec', '~> 1.3.
|
16
|
+
gem 'jeweler', '~> 1.6.4'
|
17
|
+
gem 'rake', '~> 0.9.2'
|
18
|
+
gem 'rspec', '~> 1.3.2'
|
19
19
|
|
20
20
|
end
|
21
21
|
|
22
22
|
platforms :mri_18 do
|
23
23
|
group :quality do
|
24
24
|
|
25
|
-
gem 'rcov', '~> 0.9.
|
26
|
-
gem 'yard', '~> 0.
|
27
|
-
gem 'yardstick', '~> 0.
|
25
|
+
gem 'rcov', '~> 0.9.10'
|
26
|
+
gem 'yard', '~> 0.7.2'
|
27
|
+
gem 'yardstick', '~> 0.4'
|
28
28
|
|
29
29
|
end
|
30
30
|
end
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0.rc1
|
data/dm-is-versioned.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.
|
7
|
+
s.name = "dm-is-versioned"
|
8
|
+
s.version = "1.2.0.rc1"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bernerd Schaefer"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2011-09-09"
|
13
|
+
s.description = "DataMapper plugin enabling simple versioning of models"
|
14
|
+
s.email = "bernerd [a] wieck [d] com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
17
|
"README.rdoc"
|
@@ -33,35 +33,31 @@ Gem::Specification.new do |s|
|
|
33
33
|
"tasks/yard.rake",
|
34
34
|
"tasks/yardstick.rake"
|
35
35
|
]
|
36
|
-
s.homepage =
|
36
|
+
s.homepage = "http://github.com/datamapper/dm-is-versioned"
|
37
37
|
s.require_paths = ["lib"]
|
38
|
-
s.rubyforge_project =
|
39
|
-
s.rubygems_version =
|
40
|
-
s.summary =
|
41
|
-
s.test_files = [
|
42
|
-
"spec/spec_helper.rb",
|
43
|
-
"spec/versioned_spec.rb"
|
44
|
-
]
|
38
|
+
s.rubyforge_project = "datamapper"
|
39
|
+
s.rubygems_version = "1.8.10"
|
40
|
+
s.summary = "DataMapper plugin enabling simple versioning of models"
|
45
41
|
|
46
42
|
if s.respond_to? :specification_version then
|
47
43
|
s.specification_version = 3
|
48
44
|
|
49
45
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
50
|
-
s.add_runtime_dependency(%q<dm-core>, ["~> 1.
|
51
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.
|
52
|
-
s.add_development_dependency(%q<rake>, ["~> 0.
|
53
|
-
s.add_development_dependency(%q<rspec>, ["~> 1.3.
|
46
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
47
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
48
|
+
s.add_development_dependency(%q<rake>, ["~> 0.9.2"])
|
49
|
+
s.add_development_dependency(%q<rspec>, ["~> 1.3.2"])
|
54
50
|
else
|
55
|
-
s.add_dependency(%q<dm-core>, ["~> 1.
|
56
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
57
|
-
s.add_dependency(%q<rake>, ["~> 0.
|
58
|
-
s.add_dependency(%q<rspec>, ["~> 1.3.
|
51
|
+
s.add_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
52
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
53
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
54
|
+
s.add_dependency(%q<rspec>, ["~> 1.3.2"])
|
59
55
|
end
|
60
56
|
else
|
61
|
-
s.add_dependency(%q<dm-core>, ["~> 1.
|
62
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
63
|
-
s.add_dependency(%q<rake>, ["~> 0.
|
64
|
-
s.add_dependency(%q<rspec>, ["~> 1.3.
|
57
|
+
s.add_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
58
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
59
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
60
|
+
s.add_dependency(%q<rspec>, ["~> 1.3.2"])
|
65
61
|
end
|
66
62
|
end
|
67
63
|
|
@@ -73,7 +73,7 @@ module DataMapper
|
|
73
73
|
module ClassMethods
|
74
74
|
def const_missing(name)
|
75
75
|
if name == :Version
|
76
|
-
model = DataMapper::Model.new
|
76
|
+
model = DataMapper::Model.new(name, self)
|
77
77
|
|
78
78
|
properties.each do |property|
|
79
79
|
type = case property
|
@@ -90,7 +90,7 @@ module DataMapper
|
|
90
90
|
model.property(property.name, type, options)
|
91
91
|
end
|
92
92
|
|
93
|
-
|
93
|
+
model
|
94
94
|
else
|
95
95
|
super
|
96
96
|
end
|
@@ -118,8 +118,7 @@ module DataMapper
|
|
118
118
|
# @return <Collection>
|
119
119
|
def versions
|
120
120
|
version_model = model.const_get(:Version)
|
121
|
-
|
122
|
-
query = DataMapper::Ext::Array.to_hash(pairs)
|
121
|
+
query = Hash[ model.key.zip(key).map { |p, v| [ p.name, v ] } ]
|
123
122
|
query.merge(:order => version_model.key.map { |k| k.name.desc })
|
124
123
|
version_model.all(query)
|
125
124
|
end
|
data/spec/versioned_spec.rb
CHANGED
@@ -75,25 +75,33 @@ describe 'DataMapper::Is::Versioned' do
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
78
|
+
# FIXME: temporarily disable specs that fail with the current DO gem
|
79
|
+
unless defined?(DataObjects::VERSION) &&
|
80
|
+
DataObjects::VERSION <= '0.10.3' &&
|
81
|
+
RUBY_PLATFORM =~ /java/ &&
|
82
|
+
JRUBY_VERSION >= '1.6' &&
|
83
|
+
RUBY_VERSION >= '1.9.2'
|
84
|
+
|
85
|
+
describe '(with a dirty existing resource)' do
|
86
|
+
before :all do
|
87
|
+
@story = Story.create(:title => 'A Story')
|
88
|
+
@story.title = 'An Inner Update'
|
89
|
+
@story.title = 'An Updated Story'
|
90
|
+
@story.save.should be(true)
|
91
|
+
end
|
85
92
|
|
86
|
-
|
87
|
-
|
88
|
-
|
93
|
+
it 'should create a versioned copy' do
|
94
|
+
Story::Version.all.size.should == 1
|
95
|
+
end
|
89
96
|
|
90
|
-
|
91
|
-
|
92
|
-
|
97
|
+
it 'should not have the same value for the versioned field' do
|
98
|
+
@story.updated_at.should_not == Story::Version.first.updated_at
|
99
|
+
end
|
93
100
|
|
94
|
-
|
95
|
-
|
96
|
-
|
101
|
+
it 'should save the original value, not the inner update' do
|
102
|
+
# changes to the story between saves shouldn't be updated.
|
103
|
+
@story.versions.last.title.should == 'A Story'
|
104
|
+
end
|
97
105
|
end
|
98
106
|
end
|
99
107
|
end
|
metadata
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-is-versioned
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
hash: 15424023
|
5
|
+
prerelease: 6
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
- rc
|
11
|
+
- 1
|
12
|
+
version: 1.2.0.rc1
|
6
13
|
platform: ruby
|
7
14
|
authors:
|
8
15
|
- Bernerd Schaefer
|
@@ -10,53 +17,74 @@ autorequire:
|
|
10
17
|
bindir: bin
|
11
18
|
cert_chain: []
|
12
19
|
|
13
|
-
date: 2011-
|
14
|
-
default_executable:
|
20
|
+
date: 2011-09-09 00:00:00 Z
|
15
21
|
dependencies:
|
16
22
|
- !ruby/object:Gem::Dependency
|
17
|
-
|
18
|
-
|
23
|
+
type: :runtime
|
24
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
19
25
|
none: false
|
20
26
|
requirements:
|
21
27
|
- - ~>
|
22
28
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
29
|
+
hash: 15424023
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 2
|
33
|
+
- 0
|
34
|
+
- rc
|
35
|
+
- 1
|
36
|
+
version: 1.2.0.rc1
|
25
37
|
prerelease: false
|
26
|
-
|
38
|
+
requirement: *id001
|
39
|
+
name: dm-core
|
27
40
|
- !ruby/object:Gem::Dependency
|
28
|
-
|
29
|
-
|
41
|
+
type: :development
|
42
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
30
43
|
none: false
|
31
44
|
requirements:
|
32
45
|
- - ~>
|
33
46
|
- !ruby/object:Gem::Version
|
34
|
-
|
35
|
-
|
47
|
+
hash: 7
|
48
|
+
segments:
|
49
|
+
- 1
|
50
|
+
- 6
|
51
|
+
- 4
|
52
|
+
version: 1.6.4
|
36
53
|
prerelease: false
|
37
|
-
|
54
|
+
requirement: *id002
|
55
|
+
name: jeweler
|
38
56
|
- !ruby/object:Gem::Dependency
|
39
|
-
|
40
|
-
|
57
|
+
type: :development
|
58
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
41
59
|
none: false
|
42
60
|
requirements:
|
43
61
|
- - ~>
|
44
62
|
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
63
|
+
hash: 63
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
- 9
|
67
|
+
- 2
|
68
|
+
version: 0.9.2
|
47
69
|
prerelease: false
|
48
|
-
|
70
|
+
requirement: *id003
|
71
|
+
name: rake
|
49
72
|
- !ruby/object:Gem::Dependency
|
50
|
-
|
51
|
-
|
73
|
+
type: :development
|
74
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
52
75
|
none: false
|
53
76
|
requirements:
|
54
77
|
- - ~>
|
55
78
|
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
|
79
|
+
hash: 31
|
80
|
+
segments:
|
81
|
+
- 1
|
82
|
+
- 3
|
83
|
+
- 2
|
84
|
+
version: 1.3.2
|
58
85
|
prerelease: false
|
59
|
-
|
86
|
+
requirement: *id004
|
87
|
+
name: rspec
|
60
88
|
description: DataMapper plugin enabling simple versioning of models
|
61
89
|
email: bernerd [a] wieck [d] com
|
62
90
|
executables: []
|
@@ -82,7 +110,6 @@ files:
|
|
82
110
|
- tasks/spec.rake
|
83
111
|
- tasks/yard.rake
|
84
112
|
- tasks/yardstick.rake
|
85
|
-
has_rdoc: true
|
86
113
|
homepage: http://github.com/datamapper/dm-is-versioned
|
87
114
|
licenses: []
|
88
115
|
|
@@ -96,20 +123,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
123
|
requirements:
|
97
124
|
- - ">="
|
98
125
|
- !ruby/object:Gem::Version
|
126
|
+
hash: 3
|
127
|
+
segments:
|
128
|
+
- 0
|
99
129
|
version: "0"
|
100
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
131
|
none: false
|
102
132
|
requirements:
|
103
|
-
- - "
|
133
|
+
- - ">"
|
104
134
|
- !ruby/object:Gem::Version
|
105
|
-
|
135
|
+
hash: 25
|
136
|
+
segments:
|
137
|
+
- 1
|
138
|
+
- 3
|
139
|
+
- 1
|
140
|
+
version: 1.3.1
|
106
141
|
requirements: []
|
107
142
|
|
108
143
|
rubyforge_project: datamapper
|
109
|
-
rubygems_version: 1.
|
144
|
+
rubygems_version: 1.8.10
|
110
145
|
signing_key:
|
111
146
|
specification_version: 3
|
112
147
|
summary: DataMapper plugin enabling simple versioning of models
|
113
|
-
test_files:
|
114
|
-
|
115
|
-
- spec/versioned_spec.rb
|
148
|
+
test_files: []
|
149
|
+
|