Module: Synchronisable

Includes:
ActiveSupport::Configurable
Defined in:
lib/synchronisable.rb,
lib/synchronisable/model.rb,
lib/synchronisable/source.rb,
lib/synchronisable/worker.rb,
lib/synchronisable/context.rb,
lib/synchronisable/version.rb,
lib/synchronisable/dsl/macro.rb,
lib/synchronisable/exceptions.rb,
lib/synchronisable/synchronizer.rb,
lib/synchronisable/error_handler.rb,
lib/synchronisable/model/methods.rb,
lib/synchronisable/models/import.rb,
lib/synchronisable/dsl/associations.rb,
lib/synchronisable/dsl/macro/method.rb,
lib/synchronisable/dsl/macro/attribute.rb,
lib/synchronisable/dsl/macro/expression.rb,
lib/synchronisable/dsl/associations/has_one.rb,
lib/synchronisable/dsl/associations/has_many.rb,
lib/generators/synchronisable/install_generator.rb,
lib/synchronisable/dsl/associations/association.rb,
lib/synchronisable/synchronizers/synchronizer_default.rb

Overview

The desired interface: ><(((*>

+ Model.sync + Model.sync()

Match.sync(:include =>

:match_players => :player

) Model.sync([id1, …, idn])

Model.where(condition).sync Match.where(condition).sync(:include =>

:match_players => :player

)

Defined Under Namespace

Modules: DSL, Model, VERSION Classes: Context, ErrorHandler, Import, InstallGenerator, MissedAssociationsError, MissedRemoteIdError, Source, Synchronizer, SynchronizerDefault, Worker

Class Method Summary collapse

Class Method Details

.default_modelsObject



79
80
81
# File 'lib/synchronisable.rb', line 79

def self.default_models
  models.map(&:safe_constantize).compact
end

.find_modelsObject



83
84
85
86
87
# File 'lib/synchronisable.rb', line 83

def self.find_models
  ActiveRecord::Base.descendants.select do |model|
    model.included_modules.include?(Synchronisable::Model)
  end
end

.source_models(models) ⇒ Object



74
75
76
77
# File 'lib/synchronisable.rb', line 74

def self.source_models(models)
  source = models.present? ? models : default_models
  source = source.present? ? source : find_models
end

.sync(*models) ⇒ Array<[Synchronisable::Context]>

Syncs models that is defined in #models

Parameters:

  • models (Array)

    array of models that should be synchronized. This take a precedence over models defined in #models. If this parameter is not specified and #models is empty, than it will try to sync only those models which have a corresponding synchronizers.

Returns:

See Also:



67
68
69
70
# File 'lib/synchronisable.rb', line 67

def self.sync(*models)
  source = source_models(models)
  source.map(&:sync)
end