Module: FactorySeeder
- Defined in:
- lib/factory_seeder.rb,
lib/factory_seeder/cli.rb,
lib/factory_seeder/seed.rb,
lib/factory_seeder/engine.rb,
lib/factory_seeder/loader.rb,
lib/factory_seeder/seeder.rb,
lib/factory_seeder/version.rb,
lib/factory_seeder/asset_helper.rb,
lib/factory_seeder/seed_builder.rb,
lib/factory_seeder/seed_manager.rb,
lib/factory_seeder/configuration.rb,
lib/factory_seeder/web_interface.rb,
lib/factory_seeder/seed_generator.rb,
lib/factory_seeder/factory_scanner.rb,
lib/factory_seeder/rails_integration.rb,
lib/factory_seeder/custom_seed_loader.rb,
lib/factory_seeder/execution_log_store.rb,
app/controllers/factory_seeder/factory_controller.rb,
app/controllers/factory_seeder/dashboard_controller.rb,
app/controllers/factory_seeder/application_controller.rb,
app/controllers/factory_seeder/custom_seeds_controller.rb
Defined Under Namespace
Modules: AssetHelper, RailsIntegration
Classes: ApplicationController, CLI, Configuration, CustomSeedLoader, CustomSeedsController, DashboardController, Engine, ExecutionLogStore, FactoryController, FactoryScanner, Loader, Seed, SeedBuilder, SeedGenerator, SeedManager, Seeder, WebInterface
Constant Summary
collapse
- VERSION =
'0.1.1'
Class Method Summary
collapse
Class Method Details
.clear_execution_logs! ⇒ Object
82
83
84
|
# File 'lib/factory_seeder.rb', line 82
def clear_execution_logs!
Thread.current[:factory_seeder_execution_logs] = []
end
|
.configuration ⇒ Object
12
13
14
|
# File 'lib/factory_seeder.rb', line 12
def configuration
@configuration ||= Configuration.new
end
|
16
17
18
|
# File 'lib/factory_seeder.rb', line 16
def configure
yield(configuration)
end
|
.define_seed(name, builder_block = nil, &execution_block) ⇒ Object
57
58
59
|
# File 'lib/factory_seeder.rb', line 57
def define_seed(name, builder_block = nil, &execution_block)
seed_manager.define(name, builder_block, &execution_block)
end
|
.execution_logs ⇒ Object
78
79
80
|
# File 'lib/factory_seeder.rb', line 78
def execution_logs
Thread.current[:factory_seeder_execution_logs] ||= []
end
|
.find_custom_seed(name) ⇒ Object
70
71
72
|
# File 'lib/factory_seeder.rb', line 70
def find_custom_seed(name)
seed_manager.find(name)
end
|
.generate {|seeder| ... } ⇒ Object
52
53
54
55
|
# File 'lib/factory_seeder.rb', line 52
def generate
yield(seeder) if block_given?
seeder
end
|
.list_custom_seeds ⇒ Object
66
67
68
|
# File 'lib/factory_seeder.rb', line 66
def list_custom_seeds
seed_manager.list
end
|
.list_factory_names ⇒ Object
Méthode simplifiée qui ne liste que les noms des factories
40
41
42
|
# File 'lib/factory_seeder.rb', line 40
def list_factory_names
FactoryBot.factories.map(&:name).map(&:to_s)
end
|
.list_seeds ⇒ Object
61
62
63
64
|
# File 'lib/factory_seeder.rb', line 61
def list_seeds
seeder.seeds
end
|
.loader ⇒ Object
20
21
22
|
# File 'lib/factory_seeder.rb', line 20
def loader
Loader
end
|
.log(message, level: :info, **meta) ⇒ Object
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/factory_seeder.rb', line 86
def log(message, level: :info, **meta)
entry = {
message: message.to_s,
level: level.to_sym,
timestamp: Time.now,
meta: meta
}
execution_logs << entry
entry
end
|
.normalized_logs(log_entries) ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# File 'lib/factory_seeder.rb', line 103
def normalized_logs(log_entries)
Array(log_entries).map do |log_entry|
timestamp = log_entry[:timestamp]
formatted_timestamp =
if timestamp.respond_to?(:iso8601)
timestamp.iso8601
else
timestamp.to_s
end
{
'message' => log_entry[:message].to_s,
'level' => log_entry[:level].to_s,
'timestamp' => formatted_timestamp,
'meta' => log_entry[:meta] || {}
}
end
end
|
.run(*names) ⇒ Object
122
123
124
|
# File 'lib/factory_seeder.rb', line 122
def run(*names)
seeder.run(*names)
end
|
.run_custom_seed(name, **kwargs) ⇒ Object
74
75
76
|
# File 'lib/factory_seeder.rb', line 74
def run_custom_seed(name, **kwargs)
seed_manager.run(name, **kwargs)
end
|
.scan_loaded_factories ⇒ Object
Nouvelle méthode pour scanner les factories déjà chargées
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
# File 'lib/factory_seeder.rb', line 127
def scan_loaded_factories
FactorySeeder::RailsIntegration.setup
FactorySeeder::RailsIntegration.load_models
factories = {}
FactoryBot.factories.each do |factory|
factory_name = factory.name.to_s
begin
class_name = factory_name.classify
begin
class_name = factory.build_class.name if factory.respond_to?(:build_class) && factory.build_class
rescue NameError, StandardError => e
puts "⚠️ Using inferred class name for '#{factory_name}': #{e.message}" if configuration.verbose
end
factories[factory_name] = {
name: factory_name,
class_name: class_name,
traits: (factory),
associations: (factory),
attributes: (factory)
}
rescue NameError => e
puts "⚠️ Skipping factory '#{factory_name}': #{e.message}" if configuration.verbose
rescue StandardError => e
puts "⚠️ Error analyzing factory '#{factory_name}': #{e.message}" if configuration.verbose
end
end
factories
end
|
.seed_manager ⇒ Object
48
49
50
|
# File 'lib/factory_seeder.rb', line 48
def seed_manager
@seed_manager ||= SeedManager.new
end
|
.seeder ⇒ Object
44
45
46
|
# File 'lib/factory_seeder.rb', line 44
def seeder
@seeder ||= Seeder.new
end
|