Class: Tdc::Generators::StandardGenerator

Inherits:
GeneratorBase show all
Includes:
DefinitionSourcable
Defined in:
lib/tdc/generators/standard_generator.rb

Overview

Knows how to provide a configurable instance definition.

Instance Attribute Summary collapse

Attributes inherited from GeneratorBase

#generation_context

Instance Method Summary collapse

Methods included from DefinitionSourcable

#configure_definition_source

Methods inherited from GeneratorBase

#initialize, #instance_definitions

Constructor Details

This class inherits a constructor from Tdc::Generators::GeneratorBase

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Tdc::Generators::DefinitionSourcable

Instance Attribute Details

#instance_definitionObject (readonly)

Returns the value of attribute instance_definition.



11
12
13
# File 'lib/tdc/generators/standard_generator.rb', line 11

def instance_definition
  @instance_definition
end

Instance Method Details

#generateObject



15
16
17
18
19
20
21
# File 'lib/tdc/generators/standard_generator.rb', line 15

def generate
  CatalogEntries.new.tap do |catalog_entries|
    instance_definitions.each do |instance_definition|
      generate_or_update(instance_definition, catalog_entries)
    end
  end
end

#generate_instanceObject

Hook method: subclasses are expected to define how to generate a model instance.



42
43
44
# File 'lib/tdc/generators/standard_generator.rb', line 42

def generate_instance
  raise Tdc::MissingOverrideError, "Implement the 'generate_instance' method"
end

#run_definition_resolvers(_instance_definition) ⇒ Object

Hook method: subclasses may include the DefinitionResolvable concern to override.



57
58
59
# File 'lib/tdc/generators/standard_generator.rb', line 57

def run_definition_resolvers(_instance_definition)
  # Do nothing
end

#run_resolvers_and_generate_instanceObject



23
24
25
26
27
28
# File 'lib/tdc/generators/standard_generator.rb', line 23

def run_resolvers_and_generate_instance
  run_extended_attribute_interpreters(instance_definition)
  run_definition_resolvers(instance_definition)

  generate_instance
end

#run_resolvers_and_update_instance(existing_record) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/tdc/generators/standard_generator.rb', line 30

def run_resolvers_and_update_instance(existing_record)
  generation_context.with_updating do
    run_extended_attribute_interpreters(instance_definition)
    run_definition_resolvers(instance_definition)

    update_instance(existing_record)
  end
end

#update_instance(existing_record) ⇒ Object

Hook method: subclasses may override to customize update behavior for existing records.



49
50
51
52
# File 'lib/tdc/generators/standard_generator.rb', line 49

def update_instance(existing_record)
  existing_record.update!(instance_definition)
  existing_record
end