Class: Brut::BackEnd::SeedData

Inherits:
Object
  • Object
show all
Defined in:
lib/brut/back_end/seed_data.rb

Overview

Base class and manager of Seed Data for the app. Seed Data is data used for development. It is not for populating e.g. reference data or other stuff in production, nor is it for managing test data.

Seed Data uses FactoryBot.

To create your own seed data:

  1. Inherit from this class. Doing so will register your class with an internal data structure Brut will use to create all seed data.
  2. Provide a no-arg initializer (although you are unlikely to need any initializer at all).
  3. Implement #seed! to use Factory Bot to create all the seed data. This method should be self-contained and not rely on other seed data classes. It need not be idempotent.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.classesObject



22
# File 'lib/brut/back_end/seed_data.rb', line 22

def self.classes = @classes || []

.inherited(seed_data_klass) ⇒ Object



18
19
20
21
# File 'lib/brut/back_end/seed_data.rb', line 18

def self.inherited(seed_data_klass)
  @classes ||= []
  @classes << seed_data_klass
end

Instance Method Details

#load_seeds!Object

Loads all seed data registered with this class. Seed data is registered when a class extends this one. Do not override this method.



31
32
33
34
35
36
37
# File 'lib/brut/back_end/seed_data.rb', line 31

def load_seeds!
  DB.transaction do
    self.class.classes.each do |klass|
      klass.new.seed!
    end
  end
end

#seed!Object

Implement this to create your seed data.



40
41
42
# File 'lib/brut/back_end/seed_data.rb', line 40

def seed!
  raise Brut::Framework::Errors::AbstractMethod
end

#setup!Object

Sets up anything needed before seed data can be created. Do not override this method.



25
26
27
# File 'lib/brut/back_end/seed_data.rb', line 25

def setup!
  Brut::FactoryBot.new.setup!
end