seedie 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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