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