Class: Brut::BackEnd::SeedData
- Inherits:
-
Object
- Object
- Brut::BackEnd::SeedData
- 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:
- Inherit from this class. Doing so will register your class with an internal data structure Brut will use to create all seed data.
- Provide a no-arg initializer (although you are unlikely to need any initializer at all).
- 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
-
#load_seeds! ⇒ Object
Loads all seed data registered with this class.
-
#seed! ⇒ Object
Implement this to create your seed data.
-
#setup! ⇒ Object
Sets up anything needed before seed data can be created.
Class Method Details
.classes ⇒ Object
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 |