dm-xml-adapter 0.581 → 0.582
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/lib/dm-xml-adapter.rb +24 -8
- data/spec/dm-xml-adapter_spec.rb +6 -3
- data/spec/spec_helper.rb +2 -2
- metadata +22 -2
data/lib/dm-xml-adapter.rb
CHANGED
@@ -34,6 +34,7 @@ module DataMapper::Adapters
|
|
34
34
|
|
35
35
|
def put(classname, id, object)
|
36
36
|
# check to see if we have a classname entry
|
37
|
+
#puts "putting a cache entry of id: #{id}"
|
37
38
|
if (@classes[classname] == nil)
|
38
39
|
@classes[classname] = Hash.new
|
39
40
|
end
|
@@ -50,6 +51,7 @@ module DataMapper::Adapters
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def get(classname, id)
|
54
|
+
#puts "getting a cache entry for id: #{id}"
|
53
55
|
hash = @classes[classname]
|
54
56
|
return hash[id]
|
55
57
|
end
|
@@ -75,11 +77,11 @@ module DataMapper::Adapters
|
|
75
77
|
|
76
78
|
end
|
77
79
|
|
78
|
-
def destroy_model_storage(
|
80
|
+
def destroy_model_storage(model)
|
79
81
|
FileUtils.rm_rf(classname_to_dir(model.to_s))
|
80
82
|
end
|
81
83
|
|
82
|
-
def create_model_storage(
|
84
|
+
def create_model_storage(model)
|
83
85
|
FileUtils.mkdir_p(classname_to_dir(model.to_s))
|
84
86
|
end
|
85
87
|
|
@@ -88,6 +90,7 @@ module DataMapper::Adapters
|
|
88
90
|
resources.each do |resource|
|
89
91
|
id = find_free_id_for(resources.first.class.to_s)
|
90
92
|
# find name of key attribute
|
93
|
+
#puts "we are creating a new resource with id: #{id}"
|
91
94
|
resource.attributes[key] = id
|
92
95
|
resource.instance_variable_set("@" + key.to_s, id)
|
93
96
|
save(resource)
|
@@ -159,7 +162,10 @@ module DataMapper::Adapters
|
|
159
162
|
# the file's newer OR older (aha!!), so we gotta load it up
|
160
163
|
object = file_to_object(filename, model)
|
161
164
|
objects << object
|
162
|
-
|
165
|
+
key = object.key
|
166
|
+
next if (key == nil)
|
167
|
+
key = object.key.first
|
168
|
+
@cache.put(model_name, key, object)
|
163
169
|
@cache.set_mtime(filename, File.mtime(filename))
|
164
170
|
end
|
165
171
|
end
|
@@ -220,7 +226,9 @@ module DataMapper::Adapters
|
|
220
226
|
# if there are no entries in the directory
|
221
227
|
# or the directory doesn't exist
|
222
228
|
# we need to create it...
|
229
|
+
#puts "trying to find a free id for #{class_name}"
|
223
230
|
if ! File.exists?(classname_to_dir(class_name))
|
231
|
+
#puts "the directory doesn't exist"
|
224
232
|
# default ID
|
225
233
|
return 1
|
226
234
|
end
|
@@ -230,10 +238,14 @@ module DataMapper::Adapters
|
|
230
238
|
end
|
231
239
|
id = @last_used_id[class_name] || 1
|
232
240
|
while true do
|
233
|
-
|
241
|
+
filename = File.join(directory.path, id.to_s + ".xml")
|
242
|
+
#puts "checking for the existence of #{filename}"
|
243
|
+
if ! File.exists?(filename)
|
234
244
|
@last_used_id[class_name] = id
|
245
|
+
#puts "found free id: #{id}"
|
235
246
|
return id
|
236
247
|
end
|
248
|
+
#puts "the file existed..."
|
237
249
|
id += 1
|
238
250
|
end
|
239
251
|
end
|
@@ -242,6 +254,7 @@ module DataMapper::Adapters
|
|
242
254
|
# since we're saving, purge the cache
|
243
255
|
resource_class = resource.class.to_s
|
244
256
|
resource_key = resource.key.first
|
257
|
+
#puts "the key of the oject we are saving: #{resource_key}"
|
245
258
|
@cache.delete(resource_class, resource_key)
|
246
259
|
@cache.delete_mtime(class_name_to_file(resource_class, resource_key))
|
247
260
|
|
@@ -269,10 +282,13 @@ module DataMapper::Adapters
|
|
269
282
|
end
|
270
283
|
end
|
271
284
|
end
|
272
|
-
|
285
|
+
|
286
|
+
#puts "the key is now: #{resource_key}"
|
273
287
|
xmlfile = File.new(class_name_to_file(resource_class, resource_key), "w")
|
288
|
+
#puts "saving to #{xmlfile.path}"
|
274
289
|
tempfile = Tempfile.new("dm-xml-adapter", Dir.tmpdir())
|
275
290
|
tempfile.puts out_string
|
291
|
+
#puts "the content is: #{out_string}"
|
276
292
|
tempfile.close
|
277
293
|
FileUtils.mv(tempfile.path,xmlfile.path)
|
278
294
|
return xmlfile
|
@@ -288,9 +304,9 @@ module DataMapper::Adapters
|
|
288
304
|
return File.join(classname_to_dir(class_name), id.to_s + ".xml")
|
289
305
|
end
|
290
306
|
|
291
|
-
memoize(:file_to_id)
|
292
|
-
memoize(:classname_to_dir)
|
293
|
-
memoize(:class_name_to_file)
|
307
|
+
#memoize(:file_to_id)
|
308
|
+
#memoize(:classname_to_dir)
|
309
|
+
#memoize(:class_name_to_file)
|
294
310
|
|
295
311
|
end
|
296
312
|
end
|
data/spec/dm-xml-adapter_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'dm-core'
|
3
3
|
require 'pathname'
|
4
|
+
require 'dm-migrations'
|
4
5
|
require Pathname(__FILE__).dirname.expand_path + 'spec_helper'
|
5
6
|
|
6
7
|
DataMapper::Adapters::XmlAdapter.threads = 2
|
@@ -8,6 +9,7 @@ DataMapper::Adapters::XmlAdapter.threads = 2
|
|
8
9
|
describe DataMapper::Adapters::XmlAdapter do
|
9
10
|
before(:each) do
|
10
11
|
@adapter = DataMapper.setup(:default, {:adapter => 'xml', :directory => 'db'})
|
12
|
+
DataMapper.auto_migrate!
|
11
13
|
delete_all
|
12
14
|
end
|
13
15
|
|
@@ -15,8 +17,8 @@ describe DataMapper::Adapters::XmlAdapter do
|
|
15
17
|
XMLTest::User.all.each {|u| u.destroy }
|
16
18
|
XMLTest::Post.all.each {|p| p.destroy }
|
17
19
|
AutoQuote.all.each {|aq| aq.destroy }
|
18
|
-
|
19
|
-
|
20
|
+
Food.all.each {|f| f.destroy }
|
21
|
+
Drink.all.each {|d| d.destroy }
|
20
22
|
end
|
21
23
|
|
22
24
|
after(:each) do
|
@@ -156,7 +158,8 @@ describe DataMapper::Adapters::XmlAdapter do
|
|
156
158
|
100.times {|n| Drink.create(:name => "Drink#{n}") }
|
157
159
|
# pick a random one
|
158
160
|
ids = Drink.all.map {|d| d.drink_id }
|
159
|
-
|
161
|
+
random_key = ids[rand(100).to_i]
|
162
|
+
drink = Drink.get(random_key)
|
160
163
|
drink.name = "Drinky drink!"
|
161
164
|
drink.save
|
162
165
|
Drink.first(:name => "Drinky drink!").should_not == nil
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'dm-core'
|
3
3
|
require 'pathname'
|
4
|
-
require
|
4
|
+
require 'lib/dm-xml-adapter'
|
5
5
|
|
6
6
|
class Food
|
7
7
|
include DataMapper::Resource
|
@@ -41,7 +41,7 @@ class User
|
|
41
41
|
property :user_id, Serial
|
42
42
|
property :name, String
|
43
43
|
property :age, Integer
|
44
|
-
property :money,
|
44
|
+
property :money, Decimal
|
45
45
|
property :created, DateTime
|
46
46
|
property :cool, Boolean
|
47
47
|
property :content, String
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-xml-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "0.
|
4
|
+
version: "0.582"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Harding
|
@@ -9,7 +9,7 @@ autorequire: dm-xml-adapter
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-07-
|
12
|
+
date: 2010-07-27 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -52,6 +52,26 @@ dependencies:
|
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: "0"
|
54
54
|
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dm-core
|
57
|
+
type: :runtime
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: dm-migrations
|
67
|
+
type: :runtime
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
74
|
+
version:
|
55
75
|
description:
|
56
76
|
email: josh@statewidesoftware.com
|
57
77
|
executables: []
|