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

141
142
143
144
# File 'lib/synchronisable/synchronizer.rb', line 141

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

.fetch(params = {}) ⇒ Object


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

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

.find(params) ⇒ Object


123
124
125
126
# File 'lib/synchronisable/synchronizer.rb', line 123

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


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

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

.uid(attrs) ⇒ Object


128
129
130
# File 'lib/synchronisable/synchronizer.rb', line 128

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


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

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


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

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


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

method :before_sync