dm-persevere-adapter 0.28.0 → 0.29.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +11 -11
- data/VERSION +1 -1
- data/lib/persevere_adapter.rb +16 -3
- data/spec/persevere_adapter_spec.rb +28 -0
- metadata +2 -2
data/Rakefile
CHANGED
@@ -14,17 +14,17 @@ begin
|
|
14
14
|
gemspec.add_dependency(%q<dm-core>, [">= 0.10.1"])
|
15
15
|
gemspec.add_dependency(%q<extlib>)
|
16
16
|
end
|
17
|
-
Jeweler::Tasks.new do |gemspec|
|
18
|
-
gemspec.name = %q{persevere}
|
19
|
-
gemspec.summary = %q{A ruby wrapper for persevere}
|
20
|
-
gemspec.description = %q{A ruby wrapper for persevere}
|
21
|
-
gemspec.email = ["irjudson [a] gmail [d] com"]
|
22
|
-
gemspec.homepage = %q{http://github.com/yogo/persevere}
|
23
|
-
gemspec.authors = ["Ivan R. Judson", "The Yogo Data Management Development Team" ]
|
24
|
-
gemspec.rdoc_options = ["--main", "persevere/README.txt"]
|
25
|
-
gemspec.files = ["LICENSE.txt", "persevere/History.txt", "persevere/README.txt", "Rakefile", "lib/persevere.rb"]
|
26
|
-
gemspec.test_files = ["spec/persevere_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
|
27
|
-
end
|
17
|
+
# Jeweler::Tasks.new do |gemspec|
|
18
|
+
# gemspec.name = %q{persevere}
|
19
|
+
# gemspec.summary = %q{A ruby wrapper for persevere}
|
20
|
+
# gemspec.description = %q{A ruby wrapper for persevere}
|
21
|
+
# gemspec.email = ["irjudson [a] gmail [d] com"]
|
22
|
+
# gemspec.homepage = %q{http://github.com/yogo/persevere}
|
23
|
+
# gemspec.authors = ["Ivan R. Judson", "The Yogo Data Management Development Team" ]
|
24
|
+
# gemspec.rdoc_options = ["--main", "persevere/README.txt"]
|
25
|
+
# gemspec.files = ["LICENSE.txt", "persevere/History.txt", "persevere/README.txt", "Rakefile", "lib/persevere.rb"]
|
26
|
+
# gemspec.test_files = ["spec/persevere_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
|
27
|
+
# end
|
28
28
|
Jeweler::GemcutterTasks.new
|
29
29
|
rescue LoadError
|
30
30
|
puts "Jeweler not available. Install it with: gem install jeweler"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.29.0
|
data/lib/persevere_adapter.rb
CHANGED
@@ -149,8 +149,21 @@ module DataMapper
|
|
149
149
|
return properties
|
150
150
|
end
|
151
151
|
|
152
|
-
|
153
|
-
|
152
|
+
new_schema_hash = model.to_json_schema_compatible_hash
|
153
|
+
current_schema_hash = get_schema(new_schema_hash['id'])[0]
|
154
|
+
# Diff of what is there and what will be added.
|
155
|
+
|
156
|
+
new_properties = properties.map do |property|
|
157
|
+
prop_name = property.name.to_s
|
158
|
+
prop_type = property.type
|
159
|
+
next if prop_name == 'id' ||
|
160
|
+
(current_schema_hash['properties'].has_key?(prop_name) &&
|
161
|
+
new_schema_hash['properties'][prop_name.to_sym]['type'] == current_schema_hash['properties'][prop_name]['type'] )
|
162
|
+
property
|
163
|
+
end.compact
|
164
|
+
|
165
|
+
return new_properties unless update_schema(new_schema_hash) == false
|
166
|
+
return nil
|
154
167
|
end
|
155
168
|
|
156
169
|
##
|
@@ -464,7 +477,7 @@ module DataMapper
|
|
464
477
|
def update_schema(schema_hash, project = nil)
|
465
478
|
id = schema_hash['id']
|
466
479
|
payload = schema_hash.reject{|key,value| key.to_sym.eql?(:id) }
|
467
|
-
|
480
|
+
payload['properties'].delete('id') if payload['properties'].has_key?('id')
|
468
481
|
|
469
482
|
if project.nil?
|
470
483
|
path = "/Class/#{id}"
|
@@ -36,6 +36,13 @@ describe DataMapper::Adapters::PersevereAdapter do
|
|
36
36
|
property :title, String
|
37
37
|
end
|
38
38
|
|
39
|
+
class ::Nugaton
|
40
|
+
include DataMapper::Resource
|
41
|
+
|
42
|
+
property :id, Serial
|
43
|
+
property :name, String
|
44
|
+
end
|
45
|
+
|
39
46
|
@test_schema_hash = {
|
40
47
|
'id' => 'Vanilla',
|
41
48
|
'properties' => {
|
@@ -186,4 +193,25 @@ describe DataMapper::Adapters::PersevereAdapter do
|
|
186
193
|
Bozon.auto_migrate_down!
|
187
194
|
end
|
188
195
|
end
|
196
|
+
|
197
|
+
describe 'auto updating models' do
|
198
|
+
before :each do
|
199
|
+
Nugaton.auto_migrate!
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should auto upgrade correctly" do
|
203
|
+
before_schema = @adapter.get_schema('nugaton')[0]
|
204
|
+
before_schema['properties'].should have_key('name')
|
205
|
+
before_schema['properties'].should_not have_key('big_value')
|
206
|
+
Nugaton.send(:property, :big_value, Integer)
|
207
|
+
Nugaton.auto_upgrade!
|
208
|
+
before_schema = @adapter.get_schema('nugaton')[0]
|
209
|
+
before_schema['properties'].should have_key('name')
|
210
|
+
before_schema['properties'].should have_key('big_value')
|
211
|
+
end
|
212
|
+
|
213
|
+
after(:all) do
|
214
|
+
Nugaton.auto_migrate_down!
|
215
|
+
end
|
216
|
+
end
|
189
217
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-persevere-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan R. Judson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-01-
|
13
|
+
date: 2010-01-29 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|