Class: FactorySeeder::Seed
- Inherits:
-
Object
- Object
- FactorySeeder::Seed
- Defined in:
- lib/factory_seeder/seed.rb
Instance Attribute Summary collapse
-
#block ⇒ Object
readonly
Returns the value of attribute block.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#parameters ⇒ Object
readonly
Returns the value of attribute parameters.
Instance Method Summary collapse
- #call(**kwargs) ⇒ Object
- #has_parameters? ⇒ Boolean
-
#initialize(name, description: nil, parameters: {}, metadata: {}, &block) ⇒ Seed
constructor
A new instance of Seed.
- #parameter_info(name) ⇒ Object
- #parameter_names ⇒ Object
- #to_h ⇒ Object
- #to_json(*args) ⇒ Object
- #validate_parameters!(kwargs) ⇒ Object
Constructor Details
#initialize(name, description: nil, parameters: {}, metadata: {}, &block) ⇒ Seed
Returns a new instance of Seed.
7 8 9 10 11 12 13 14 |
# File 'lib/factory_seeder/seed.rb', line 7 def initialize(name, description: nil, parameters: {}, metadata: {}, &block) @name = name.to_sym @description = description || "Seed for #{name}" @parameters = parameters.transform_keys(&:to_sym) @metadata = .transform_keys(&:to_sym) @block = block @created_at = Time.now end |
Instance Attribute Details
#block ⇒ Object (readonly)
Returns the value of attribute block.
5 6 7 |
# File 'lib/factory_seeder/seed.rb', line 5 def block @block end |
#description ⇒ Object (readonly)
Returns the value of attribute description.
5 6 7 |
# File 'lib/factory_seeder/seed.rb', line 5 def description @description end |
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
5 6 7 |
# File 'lib/factory_seeder/seed.rb', line 5 def @metadata end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/factory_seeder/seed.rb', line 5 def name @name end |
#parameters ⇒ Object (readonly)
Returns the value of attribute parameters.
5 6 7 |
# File 'lib/factory_seeder/seed.rb', line 5 def parameters @parameters end |
Instance Method Details
#call(**kwargs) ⇒ Object
16 17 18 19 |
# File 'lib/factory_seeder/seed.rb', line 16 def call(**kwargs) validate_parameters!(kwargs) @block.call(**kwargs) end |
#has_parameters? ⇒ Boolean
25 26 27 |
# File 'lib/factory_seeder/seed.rb', line 25 def has_parameters? @parameters.any? end |
#parameter_info(name) ⇒ Object
29 30 31 |
# File 'lib/factory_seeder/seed.rb', line 29 def parameter_info(name) @parameters[name.to_sym] end |
#parameter_names ⇒ Object
21 22 23 |
# File 'lib/factory_seeder/seed.rb', line 21 def parameter_names @parameters.keys end |
#to_h ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/factory_seeder/seed.rb', line 50 def to_h { name: @name, description: @description, parameters: @parameters, metadata: @metadata, created_at: @created_at, has_parameters: has_parameters? } end |
#to_json(*args) ⇒ Object
61 62 63 |
# File 'lib/factory_seeder/seed.rb', line 61 def to_json(*args) to_h.to_json(*args) end |
#validate_parameters!(kwargs) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/factory_seeder/seed.rb', line 33 def validate_parameters!(kwargs) # Check for required parameters required_params = @parameters.select { |_, info| info[:required] }.keys missing_params = required_params - kwargs.keys raise ArgumentError, "Missing required parameters: #{missing_params.join(', ')}" if missing_params.any? # Validate parameter types and values kwargs.each do |key, value| param_info = @parameters[key] next unless param_info validate_parameter_type!(key, value, param_info) validate_parameter_value!(key, value, param_info) end end |