Skip to content

Commit d5d29da

Browse files
committed
Accept ultra_safe as an initializer option
Allow stores to select atomic-save behavior when they are created while preserving the existing accessor.
1 parent c8d1b25 commit d5d29da

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

lib/pstore.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,13 @@ class Error < StandardError
373373
# store = PStore.new(path, true)
374374
# store = PStore.new(path, thread_safe: true)
375375
#
376-
def initialize(file, _thread_safe = false, thread_safe: _thread_safe)
376+
# If keyword argument +ultra_safe+ is given as +true+, the object is
377+
# set to +ultra_safe+ mode.
378+
#
379+
# store = PStore.new(path, ultra_safe: true)
380+
#
381+
def initialize(file, _thread_safe = false, thread_safe: _thread_safe,
382+
ultra_safe: false)
377383
dir = File::dirname(file)
378384
unless File::directory? dir
379385
raise PStore::Error, format("directory %s does not exist", dir)
@@ -383,7 +389,7 @@ def initialize(file, _thread_safe = false, thread_safe: _thread_safe)
383389
end
384390
@filename = File.path(file)
385391
@abort = false
386-
@ultra_safe = false
392+
@ultra_safe = ultra_safe
387393
@thread_safe = thread_safe
388394
@lock = Thread::Mutex.new
389395
end

test/test_pstore.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ def test_thread_safe_argument
135135
assert_equal false, PStore.new(@pstore_file, true, thread_safe: false).instance_variable_get(:@thread_safe)
136136
end
137137

138+
def test_ultra_safe_argument
139+
assert_equal false, PStore.new(@pstore_file).ultra_safe
140+
assert_equal true, PStore.new(@pstore_file, ultra_safe: true).ultra_safe
141+
assert_equal false, PStore.new(@pstore_file, ultra_safe: false).ultra_safe
142+
end
143+
138144
def test_nested_transaction_raises_error
139145
assert_raise(PStore::Error) do
140146
@pstore.transaction { @pstore.transaction { } }

0 commit comments

Comments
 (0)