Class: Aspera::PersistencyActionOnce
- Inherits:
-
Object
- Object
- Aspera::PersistencyActionOnce
- Defined in:
- lib/aspera/persistency_action_once.rb
Overview
Persist data on file system
Instance Method Summary collapse
- #data ⇒ Object
-
#initialize(manager:, data:, id:, delete: DELETE_DEFAULT, parse: PARSE_DEFAULT, format: FORMAT_DEFAULT, merge: MERGE_DEFAULT) ⇒ PersistencyActionOnce
constructor
A new instance of PersistencyActionOnce.
- #save ⇒ Object
Constructor Details
#initialize(manager:, data:, id:, delete: DELETE_DEFAULT, parse: PARSE_DEFAULT, format: FORMAT_DEFAULT, merge: MERGE_DEFAULT) ⇒ PersistencyActionOnce
Returns a new instance of PersistencyActionOnce.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/aspera/persistency_action_once.rb', line 24 def initialize(manager:, data:, id:, delete: DELETE_DEFAULT, parse: PARSE_DEFAULT, format: FORMAT_DEFAULT, merge: MERGE_DEFAULT) Aspera.assert(MANAGER_METHODS.all?{|i|manager.respond_to?(i)}){"Manager must answer to #{MANAGER_METHODS}"} Aspera.assert(!data.nil?) Aspera.assert_type(id, String) Aspera.assert(!id.empty?) Aspera.assert_type(delete, Proc) Aspera.assert_type(parse, Proc) Aspera.assert_type(format, Proc) Aspera.assert_type(merge, Proc) @manager = manager @persisted_object = data @object_id = id @delete_condition = delete @persist_format = format value = @manager.get(@object_id) merge.call(@persisted_object, parse.call(value)) unless value.nil? end |
Instance Method Details
#data ⇒ Object
50 51 52 |
# File 'lib/aspera/persistency_action_once.rb', line 50 def data return @persisted_object end |
#save ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/aspera/persistency_action_once.rb', line 42 def save if @delete_condition.call(@persisted_object) @manager.delete(@object_id) else @manager.put(@object_id, @persist_format.call(@persisted_object)) end end |