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


139
140
141
142
# File 'lib/synchronisable/synchronizer.rb', line 139

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

.fetch(params = {}) ⇒ Object



116
117
118
119
# File 'lib/synchronisable/synchronizer.rb', line 116

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

.find(params) ⇒ Object



121
122
123
124
# File 'lib/synchronisable/synchronizer.rb', line 121

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.



150
151
152
153
154
155
156
# File 'lib/synchronisable/synchronizer.rb', line 150

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

.uid(attrs) ⇒ Object



126
127
128
# File 'lib/synchronisable/synchronizer.rb', line 126

def uid(attrs)
  unique_id.is_a?(Proc) ? unique_id.(attrs) : attrs[unique_id]
end

Instance Method Details

#before_association_syncBoolean

Lambda, that will be called before each association sync.



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

method :before_association_sync

#before_record_syncBoolean

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



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

method :before_record_sync

#before_syncBoolean

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



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

method :before_sync