Class: DumpedRailers::RecordBuilder::FixtureSet

Inherits:
Object
  • Object
show all
Includes:
TSort
Defined in:
lib/dumped_railers/record_builder/fixture_set.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_fixtures, authorized_models: []) ⇒ FixtureSet

Returns a new instance of FixtureSet.



12
13
14
15
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 12

def initialize(raw_fixtures, authorized_models: [])
  @fixture_tables = raw_fixtures.map { |raw_records| build_fixture_table(raw_records) }
  @authorized_models = Array(authorized_models)
end

Instance Attribute Details

#fixture_tablesObject (readonly)

Returns the value of attribute fixture_tables.



10
11
12
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 10

def fixture_tables
  @fixture_tables
end

#record_setsObject (readonly)

Returns the value of attribute record_sets.



10
11
12
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 10

def record_sets
  @record_sets
end

Instance Method Details

#authorize_models!Object

Raises:

  • (RuntimeError)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 25

def authorize_models!
  return if @authorized_models.include?(:any)

  unauthorized_models = fixture_models.reject { |model|
    @authorized_models.include? model
  }
  return if unauthorized_models.empty?

  raise RuntimeError, "     You are trying to import data into unauthorized models.\n     Make sure that the fixture contains records for authorized models only.\n\n     Models that are forbidden to access: \#{unauthorized_models.map(&:name).join(', ')}\n\n  ERROR_MESSAGE\nend\n"

#build_record_sets!Object



42
43
44
45
46
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 42

def build_record_sets!
  @record_sets = @fixture_tables.map { |table|
    [table.model, table.build_records!]
  }.to_h
end

#sort_by_table_dependencies!Object



17
18
19
20
21
22
23
# File 'lib/dumped_railers/record_builder/fixture_set.rb', line 17

def sort_by_table_dependencies!
  @fixture_tables.each(&:analyze_metadata_dependencies!)
  # dependency are sorted in topological order using Active Record reflection
  @fixture_tables = tsort

  self
end