xamplr 1.9.9 → 1.9.10
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/VERSION.yml +1 -1
- data/lib/xamplr/persistence.rb +51 -50
- data/lib/xamplr/xampl-persisted-object.rb +6 -2
- data/xamplr.gemspec +2 -2
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/xamplr/persistence.rb
CHANGED
@@ -324,57 +324,58 @@ module Xampl
|
|
324
324
|
end
|
325
325
|
|
326
326
|
def Xampl.read_only(target_persister)
|
327
|
-
|
328
|
-
|
327
|
+
@@xampl_lock.synchronize(:EX) do
|
328
|
+
name = target_persister.name
|
329
329
|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
330
|
+
if block_given? then
|
331
|
+
initial_persister = @@persister
|
332
|
+
Xampl.enable_persister(name, target_persister.kind, target_persister.format)
|
333
|
+
|
334
|
+
rollback = true
|
335
|
+
original_automatic = @@persister.automatic
|
336
|
+
original_changed = @changed
|
337
|
+
@changed = {}
|
338
|
+
begin
|
339
|
+
Xampl.auto_persistence(false)
|
340
|
+
#Xampl.block_future_changes(true)
|
341
|
+
|
342
|
+
yield
|
343
|
+
rollback = false
|
344
|
+
ensure
|
345
|
+
#### Xampl.auto_persistence(original_automatic)
|
346
|
+
#### #Xampl.block_future_changes(false)
|
347
|
+
####
|
348
|
+
#### if 0 < @changed.size then
|
349
|
+
#### puts "CHANGED COUNT: #{@changed.size}"
|
350
|
+
#### raise BlockedChange.new(target_persister)
|
351
|
+
#### end
|
352
|
+
####
|
353
|
+
#### @changed = original_changed
|
354
|
+
####
|
355
|
+
#### puts "ROLLBACK(#{__LINE__})" if rollback
|
356
|
+
#### Xampl.rollback if rollback
|
357
|
+
#### @@persister = initial_persister
|
358
|
+
|
359
|
+
Xampl.auto_persistence(original_automatic)
|
360
|
+
#Xampl.block_future_changes(false)
|
361
|
+
|
362
|
+
if 0 == @changed.size then
|
363
|
+
@changed = original_changed
|
364
|
+
|
365
|
+
#puts "ROLLBACK(#{__LINE__})" if rollback
|
366
|
+
Xampl.rollback if rollback
|
367
|
+
@@persister = initial_persister
|
368
|
+
else
|
369
|
+
#puts "CHANGED COUNT: #{@changed.size}"
|
370
|
+
@changed = original_changed
|
371
|
+
|
372
|
+
#puts "ROLLBACK(#{__LINE__})" if rollback
|
373
|
+
Xampl.rollback
|
374
|
+
|
375
|
+
@@persister = initial_persister
|
376
|
+
|
377
|
+
raise BlockedChange.new(target_persister)
|
378
|
+
end
|
378
379
|
end
|
379
380
|
end
|
380
381
|
end
|
@@ -36,12 +36,16 @@ module Xampl
|
|
36
36
|
raise MixedPersisters.new(@persister, self)
|
37
37
|
elsif Xampl.persister == @persister then
|
38
38
|
if not @persister.syncing then
|
39
|
-
Xampl.
|
39
|
+
Xampl.read_only(@persister) do
|
40
|
+
Xampl.lazy_load(self)
|
41
|
+
end
|
40
42
|
else
|
41
43
|
puts "LOAD NEEDED(3): BAD IDEA, but load anyway (persister: #{@persister.name})"
|
42
44
|
puts " #{self.class.name}"
|
43
45
|
puts " pid: #{self.get_the_index}"
|
44
|
-
Xampl.
|
46
|
+
Xampl.read_only(@persister) do
|
47
|
+
Xampl.lazy_load(self)
|
48
|
+
end
|
45
49
|
# puts "LOAD NEEDED(3): REFUSED (persister: #{@persister.name})"
|
46
50
|
# puts " #{self.class.name}"
|
47
51
|
# puts " pid: #{self.get_the_index}"
|
data/xamplr.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{xamplr}
|
8
|
-
s.version = "1.9.
|
8
|
+
s.version = "1.9.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bob Hutchison"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-18}
|
13
13
|
s.description = %q{xamplr is the ruby version of xampl.}
|
14
14
|
s.email = %q{hutch@recursive.ca}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xamplr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Hutchison
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-03-
|
12
|
+
date: 2010-03-18 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|