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.

Parameters:

  • attrs (Hash)

    remote attributes

Returns:

  • remote id value

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.

Parameters:

  • attrs (Hash)

    remote attributes

Returns:

  • (Hash)

    local mapped 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.

Parameters:

Returns:

  • (Boolean)

    ‘true` to continue sync, `false` to cancel



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.

Parameters:

Returns:

  • (Boolean)

    ‘true` to continue sync, `false` to cancel



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.

Parameters:

Returns:

  • (Boolean)

    ‘true` to continue sync, `false` to cancel



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

method :before_sync