Module: CloneKit

Defined in:
lib/clone_kit.rb,
lib/clone_kit/rule.rb,
lib/clone_kit/graph.rb,
lib/clone_kit/version.rb,
lib/clone_kit/operation.rb,
lib/clone_kit/rules/remap.rb,
lib/clone_kit/event_outlet.rb,
lib/clone_kit/rules/except.rb,
lib/clone_kit/cloners/no_op.rb,
lib/clone_kit/shared_id_map.rb,
lib/clone_kit/specification.rb,
lib/clone_kit/emitters/empty.rb,
lib/clone_kit/rules/safe_remap.rb,
lib/clone_kit/id_generators/bson.rb,
lib/clone_kit/id_generators/uuid.rb,
lib/clone_kit/mongo_specification.rb,
lib/clone_kit/merge_attributes_tool.rb,
lib/clone_kit/strategies/synchronous.rb,
lib/clone_kit/id_generators/invalid_id.rb,
lib/clone_kit/active_record_specification.rb,
lib/clone_kit/cloners/mongoid_ruleset_cloner.rb,
lib/clone_kit/rules/allow_only_mongoid_fields.rb,
lib/clone_kit/cloners/active_record_ruleset_cloner.rb,
lib/clone_kit/decorators/embedded_cloner_decorator.rb,
lib/clone_kit/cloners/mongoid_merging_ruleset_cloner.rb,
lib/clone_kit/cloners/active_record_merging_ruleset_cloner.rb

Defined Under Namespace

Modules: Cloners, Decorators, Emitters, IdGenerators, Rules, Strategies Classes: ActiveRecordSpecification, EventOutlet, Graph, MergeAttributesTool, MongoSpecification, Operation, Rule, SharedIdMap, Specification, SpecificationError

Constant Summary collapse

VERSION =
"0.4.1"

Class Method Summary collapse

Class Method Details

.add_specification(specification) ⇒ Object



33
34
35
36
# File 'lib/clone_kit.rb', line 33

def self.add_specification(specification)
  spec[specification.model.name] = specification
  refresh_specification(specification)
end

.cloneable_models(already_cloned) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/clone_kit.rb', line 42

def self.cloneable_models(already_cloned)
  result = []
  graph.nodes.each do |model_name, deps|
    next if already_cloned.include?(model_name)
    next unless deps.all? { |dep| already_cloned.include?(dep) }

    result << model_name
  end
  result
end

.graphObject



16
17
18
# File 'lib/clone_kit.rb', line 16

def self.graph
  @graph ||= CloneKit::Graph.new
end

.load_rails_models!Object



20
21
22
23
# File 'lib/clone_kit.rb', line 20

def self.load_rails_models!
  Rails.application.eager_load! if defined?(Rails) && !defined?(@eager_loaded_once)
  @eager_loaded_once = true
end

.refresh_specification(specification) ⇒ Object



38
39
40
# File 'lib/clone_kit.rb', line 38

def self.refresh_specification(specification)
  graph.add_vertex(specification.model.name, *specification.dependencies)
end

.reset_graph!Object



29
30
31
# File 'lib/clone_kit.rb', line 29

def self.reset_graph!
  @graph = nil
end

.specObject



25
26
27
# File 'lib/clone_kit.rb', line 25

def self.spec
  @spec ||= {}
end