lib/replication/process.rb in replication-0.3.2 vs lib/replication/process.rb in replication-0.4.0

- old
+ new

@@ -1,28 +1,22 @@ module Replication module Process - def self.extended(model_class) - model_class.class_eval do - include Model - end - end + def can_replicate(pairs_method = :attributes, **options) + reset_config if self.respond_to?(:unwound) - # Include or extend it. We work with both. - def self.included(model_class) - model_class.extend self - end + puts replication_config.inspect - def can_replicate(pairs_method = :attributes, **options) - @@replication_config = Class.new(Config).new(self) default_options = Replication.defaults modules = [:semi_conservative] # required module modules.concat([].push(options.delete(:with)).flatten).compact! - @@replication_config.pairs_method = pairs_method - @@replication_config.set default_options.merge(options) - @@replication_config.with modules + replication_config.pairs_method = pairs_method + replication_config.set default_options.merge(options) + replication_config.with modules + + include Model end def new_from_strand(id=nil, **options) if id strand = replication_config.strand_class.to_adapter.get!(id) @@ -31,27 +25,36 @@ end new(strand.pairs) if strand end - def replication_config - @@replication_config + def reset_config + @replication_config = nil end - module Model - - def strand_class - replication_config.strand_class + def replication_config + @replication_config ||= base_class.replication_config.dup.tap do |config| + config.model_class = self end + end + end - def replication_config - self.class.replication_config - end + module Model + def self.included(model_class) + return if model_class.respond_to?(:can_replicate) + end - private + def strand_class + replication_config.strand_class + end - def _strand_attributes - send(replication_config.pairs_method).deep_symbolize_keys - end + def replication_config + self.class.replication_config end + + private + + def _strand_attributes + send(replication_config.pairs_method).deep_symbolize_keys + end end end