Class: Synchronisable::Synchronizer Abstract

Inherits:
Object
  • Object
show all
Includes:
DSL::Associations, DSL::Macro
Defined in:
lib/synchronisable/synchronizer.rb

Overview

This class is abstract.

Subclass to create your model specific synchronizer class to setup synchronization attributes and behavior.

Direct Known Subclasses

SynchronizerDefault

Constant Summary collapse

SYMBOL_ARRAY_CONVERTER =
->(source) { (source || []).map(&:to_s) }

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extract_remote_id(attrs) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts remote id from given attribute hash.

Raises:

See Also:

  • #ensure_remote_id


132
133
134
135
# File 'lib/synchronisable/synchronizer.rb', line 132

def extract_remote_id(attrs)
  id = attrs.delete(remote_id)
  ensure_remote_id(id)
end

.fetch(params = {}) ⇒ Object



113
114
115
116
# File 'lib/synchronisable/synchronizer.rb', line 113

def fetch(params = {})
  data = fetcher.(params)
  data.present? ? data : gateway_instance.try(:fetch, params)
end

.find(params) ⇒ Object



118
119
120
121
# File 'lib/synchronisable/synchronizer.rb', line 118

def find(params)
  data = finder.(params)
  data.present? ? data : gateway_instance.try(:find, params)
end

.map_attributes(attrs) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Maps the remote attributes to local model attributes.



143
144
145
146
147
148
149
# File 'lib/synchronisable/synchronizer.rb', line 143

def map_attributes(attrs)
  AttributeMapper.map(attrs, mappings, {
    :only   => only,
    :except => except,
    :keep   => associations.keys
  })
end

Instance Method Details

#before_association_syncBoolean

Lambda, that will be called before each association sync.



102
# File 'lib/synchronisable/synchronizer.rb', line 102

method :before_association_sync

#before_record_syncBoolean

Lambda, that will be called before synchronization of each record.



87
# File 'lib/synchronisable/synchronizer.rb', line 87

method :before_record_sync

#before_syncBoolean

Lambda, that will be called before synchronization of each record and its assocations.



75
# File 'lib/synchronisable/synchronizer.rb', line 75

method :before_sync