seedie 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +91 -9
  3. data/CHANGELOG.md +123 -0
  4. data/Gemfile +4 -1
  5. data/README.md +77 -3
  6. data/Rakefile +1 -1
  7. data/lib/generators/seedie/install_generator.rb +84 -37
  8. data/lib/generators/seedie/templates/blank_seedie.yml +22 -0
  9. data/lib/generators/seedie/templates/seedie_initializer.rb +8 -0
  10. data/lib/seedie/associations/base_association.rb +35 -31
  11. data/lib/seedie/associations/belongs_to.rb +12 -13
  12. data/lib/seedie/associations/has_and_belongs_to_many.rb +26 -0
  13. data/lib/seedie/associations/has_many.rb +6 -4
  14. data/lib/seedie/associations/has_one.rb +13 -13
  15. data/lib/seedie/configuration.rb +12 -0
  16. data/lib/seedie/field_values/custom_value.rb +14 -83
  17. data/lib/seedie/field_values/fake_value.rb +85 -17
  18. data/lib/seedie/field_values/faker_builder.rb +29 -35
  19. data/lib/seedie/field_values/value_template_validator.rb +91 -0
  20. data/lib/seedie/field_values_set.rb +21 -4
  21. data/lib/seedie/model/creator.rb +7 -5
  22. data/lib/seedie/model/id_generator.rb +10 -8
  23. data/lib/seedie/model/model_sorter.rb +14 -19
  24. data/lib/seedie/model_fields.rb +5 -3
  25. data/lib/seedie/model_seeder.rb +11 -22
  26. data/lib/seedie/polymorphic_association_helper.rb +20 -16
  27. data/lib/seedie/railtie.rb +3 -2
  28. data/lib/seedie/reporters/base_reporter.rb +75 -68
  29. data/lib/seedie/reporters/console_reporter.rb +16 -12
  30. data/lib/seedie/reporters/reportable.rb +14 -10
  31. data/lib/seedie/seeder.rb +5 -3
  32. data/lib/seedie/version.rb +1 -1
  33. data/lib/seedie.rb +21 -27
  34. data/lib/tasks/seedie.rake +4 -2
  35. metadata +32 -13
data/lib/seedie/seeder.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seedie
2
4
  class Seeder
3
5
  include Reporters::Reportable
@@ -23,7 +25,7 @@ module Seedie
23
25
  end
24
26
  end
25
27
  report(:seed_finish)
26
-
28
+
27
29
  @reporters.each(&:close)
28
30
  end
29
31
 
@@ -32,8 +34,8 @@ module Seedie
32
34
  def load_config(path)
33
35
  path = Rails.root.join("config", "seedie.yml") if path.nil?
34
36
  raise ConfigFileNotFound, "Config file not found in #{path}" unless File.exist?(path)
35
-
37
+
36
38
  YAML.load_file(path)
37
39
  end
38
40
  end
39
- end
41
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Seedie
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/seedie.rb CHANGED
@@ -1,37 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "seedie/reporters/reportable"
4
- require_relative "seedie/reporters/base_reporter"
5
- require_relative "seedie/reporters/console_reporter"
6
-
7
- require_relative "seedie/field_values/fake_value"
8
- require_relative "seedie/field_values/custom_value"
9
- require_relative "seedie/field_values/faker_builder"
10
- require_relative "seedie/field_values_set"
11
- require_relative "seedie/model_fields"
12
- require_relative "seedie/model_seeder"
13
-
14
- require_relative "seedie/polymorphic_association_helper"
15
-
16
- require_relative "seedie/model/creator"
17
- require_relative "seedie/model/model_sorter"
18
- require_relative "seedie/model/id_generator"
19
-
20
- require_relative "seedie/associations/base_association"
21
- require_relative "seedie/associations/has_many"
22
- require_relative "seedie/associations/has_one"
23
- require_relative "seedie/associations/belongs_to"
24
-
25
- require_relative "seedie/seeder"
26
- require_relative "seedie/version"
27
-
28
- require "seedie/railtie" if defined?(Rails)
29
-
30
3
  require "active_record"
31
4
  require "faker"
32
5
  require "yaml"
6
+ require "zeitwerk"
33
7
 
34
8
  module Seedie
9
+ @loader = Zeitwerk::Loader.for_gem
10
+ @loader.ignore("#{__dir__}/generators")
11
+ @loader.setup
12
+
35
13
  class Error < StandardError; end
36
14
  class InvalidFakerMethodError < StandardError; end
37
15
  class UnknownColumnTypeError < StandardError; end
@@ -41,4 +19,20 @@ module Seedie
41
19
  class InvalidCustomFieldValuesError < StandardError; end
42
20
  class InvalidCustomFieldOptionsError < StandardError; end
43
21
  class CustomFieldNotEnoughValuesError < StandardError; end
22
+
23
+ class << self
24
+ def configure
25
+ yield configuration if block_given?
26
+ end
27
+
28
+ def configuration
29
+ @configuration ||= Configuration.new
30
+ end
31
+
32
+ def eager_load!
33
+ @loader.eager_load
34
+ end
35
+ end
44
36
  end
37
+
38
+ Seedie.eager_load!
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "seedie"
2
4
 
3
5
  namespace :seedie do
4
6
  desc "Load the Seedie seeds"
5
- task :seed => :environment do
7
+ task seed: :environment do
6
8
  Seedie::Seeder.new.seed_models
7
9
  end
8
- end
10
+ end
metadata CHANGED
@@ -1,45 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seedie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keshav Biswa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-13 00:00:00.000000000 Z
11
+ date: 2023-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 5.2.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: faker
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - "~>"
31
+ - - ">="
18
32
  - !ruby/object:Gem::Version
19
33
  version: '2.9'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - "~>"
38
+ - - ">="
25
39
  - !ruby/object:Gem::Version
26
40
  version: '2.9'
27
41
  - !ruby/object:Gem::Dependency
28
- name: activerecord
42
+ name: zeitwerk
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 5.2.0
47
+ version: '2.4'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ">="
52
+ - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 5.2.0
54
+ version: '2.4'
41
55
  - !ruby/object:Gem::Dependency
42
- name: rspec
56
+ name: generator_spec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
@@ -53,7 +67,7 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: rspec-rails
70
+ name: rails
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
@@ -67,7 +81,7 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: generator_spec
84
+ name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
@@ -81,7 +95,7 @@ dependencies:
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: rails
98
+ name: rspec-rails
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - ">="
@@ -125,15 +139,20 @@ files:
125
139
  - Rakefile
126
140
  - lib/generators/seedie/USAGE
127
141
  - lib/generators/seedie/install_generator.rb
142
+ - lib/generators/seedie/templates/blank_seedie.yml
128
143
  - lib/generators/seedie/templates/seedie.yml
144
+ - lib/generators/seedie/templates/seedie_initializer.rb
129
145
  - lib/seedie.rb
130
146
  - lib/seedie/associations/base_association.rb
131
147
  - lib/seedie/associations/belongs_to.rb
148
+ - lib/seedie/associations/has_and_belongs_to_many.rb
132
149
  - lib/seedie/associations/has_many.rb
133
150
  - lib/seedie/associations/has_one.rb
151
+ - lib/seedie/configuration.rb
134
152
  - lib/seedie/field_values/custom_value.rb
135
153
  - lib/seedie/field_values/fake_value.rb
136
154
  - lib/seedie/field_values/faker_builder.rb
155
+ - lib/seedie/field_values/value_template_validator.rb
137
156
  - lib/seedie/field_values_set.rb
138
157
  - lib/seedie/model/creator.rb
139
158
  - lib/seedie/model/id_generator.rb