Class: RecordLoader::AssetShapeLoader

Inherits:
ApplicationRecordLoader show all
Defined in:
lib/record_loader/asset_shape_loader.rb

Overview

Creates the specified asset shapes if they are not present

Instance Method Summary collapse

Methods inherited from ApplicationRecordLoader

#wip_list

Instance Method Details

#create_or_update!(name, options) ⇒ Object

Creates an AssetShape record with the given name and options. If a record with the same name already exists, it is skipped. If not, a new one is created. For each size specified in the options, Map records are generated up to that size, unless they already exist.

Parameters:

  • name (String)

    the name of the AssetShape record

  • options (Hash)

    the options to be used for creating the record

Options Hash (options):

  • :horizontal_ratio (Integer)

    the numerator in the simplest form of the plate width/height ratio

  • :vertical_ratio (Integer)

    the denominator in the simplest form of the plate width/height ratio

  • :description_strategy (String)

    The strategy for describing the plate

  • :sizes (Array<Integer>)

    The sizes of the plates to generate Maps for



22
23
24
25
26
27
28
29
30
31
# File 'lib/record_loader/asset_shape_loader.rb', line 22

def create_or_update!(name, options)
  config = { name: }.merge(options.symbolize_keys)

  # PlateMapGeneration expects a non-namespaced constant for
  # description_strategy. It adds "Map::" prefix to refer to a nested
  # module in the Map class. We remove this prefix in case it is given
  # in the records file.
  config[:description_strategy] = config[:description_strategy].delete_prefix('Map::')
  PlateMapGeneration.new(**config).save!
end