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/merge_attributes_tool.rb,
lib/clone_kit/strategies/synchronous.rb,
lib/clone_kit/cloners/mongoid_ruleset_cloner.rb,
lib/clone_kit/rules/allow_only_mongoid_fields.rb,
lib/clone_kit/decorators/embedded_cloner_decorator.rb,
lib/clone_kit/cloners/mongoid_merging_ruleset_cloner.rb

Defined Under Namespace

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

Constant Summary collapse

VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.add_specification(specification) ⇒ Object



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

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

.cloneable_models(already_cloned) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/clone_kit.rb', line 36

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



14
15
16
# File 'lib/clone_kit.rb', line 14

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

.load_rails_models!Object



18
19
20
21
# File 'lib/clone_kit.rb', line 18

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



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

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

.specObject



23
24
25
# File 'lib/clone_kit.rb', line 23

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