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.0"
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
|
.graph ⇒ Object
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
|
.spec ⇒ Object
25
26
27
|
# File 'lib/clone_kit.rb', line 25
def self.spec
@spec ||= {}
end
|