13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/super_settings/storage/transaction.rb', line 13
def transaction(&block)
if Thread.current[transaction_key]
yield Thread.current[transaction_key]
else
begin
changes = []
Thread.current[transaction_key] = changes
yield(changes)
if save_all(changes) == false
raise SuperSettings::Setting::PersistenceError.new("Settings could not be saved")
end
changes.each do |object|
object.persisted = true if object.respond_to?(:persisted=)
end
ensure
Thread.current[transaction_key] = nil
end
end
end
|