seed_reaper 0.0.5 → 0.0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1fad4ebc284e6a5e6a30df7e9a3305c70d48060d4d12a4a48f69391149fc975a
4
- data.tar.gz: a66337b1c8749eb67a42b1fb1bb9d601e8f1cc21cf2002cb22044e534007b81f
3
+ metadata.gz: 338334877dd8903cc4383daa7a0ba5145b03d826e34caadb895d2dd7315ad6e5
4
+ data.tar.gz: 852714966712a98fe5787bc2b217f2ec83213a95d55c6ab07ba6d73d0d252f14
5
5
  SHA512:
6
- metadata.gz: 9f5756b19dd5aaac7567cfbe78669e96e0c936d9cad7f50f1ecddbc9272581018b4bf1ef27d88bbee83b713c40d5278f36e777956cf473f1b533f480cc49d884
7
- data.tar.gz: f78cedba61282dfe2f36c25b80c637630a39a2051bf35471df3922d9efed6d9d31d4058919ceec443f6b5b66d36ef177c76e9ecf8156593649bf7a1082942bfb
6
+ metadata.gz: 343b4809b733469b8efbe44a013e33d02ef69e51473b908e339577c68df7e64db4569123a87f768e291470e9d97e0814e78c5b283dc0ce86ef09328e1f6810fe
7
+ data.tar.gz: 5d92b810c6b1c7dadfc24ee5d184676871b93f16b9a84c363e90206593e5f3c62b1f4f04eeb2ac1bedbc56f33142d64d3a749e81db6a495fe34fbd865c9f26d9
@@ -40,7 +40,7 @@ module SeedReaper
40
40
  return schema unless instance._reflections[schema.to_s].belongs_to?
41
41
  end
42
42
 
43
- %i[count joins].each do |meta_field|
43
+ %i[count joins nullify class_name].each do |meta_field|
44
44
  define_method meta_field do
45
45
  meta(meta_field)
46
46
  end
@@ -20,7 +20,7 @@ module SeedReaper
20
20
  def base_model
21
21
  return @config.to_s.camelize.constantize if @config.is_a?(Symbol)
22
22
 
23
- @config.first[0].to_s.camelize.constantize
23
+ (base_config_evaluator.class_name || @config.first[0]).to_s.camelize.constantize
24
24
  end
25
25
 
26
26
  def base_config
@@ -29,12 +29,16 @@ module SeedReaper
29
29
  @config.first[1]
30
30
  end
31
31
 
32
+ def base_config_evaluator
33
+ @base_config_evaluator ||= ConfigEvaluator.new(base_config)
34
+ end
35
+
32
36
  def seedify_collection(collection, config)
33
37
  ce = ConfigEvaluator.new(config)
34
38
  evaluated_collection(collection, ce).reduce('') do |str, instance|
35
39
  str +=
36
40
  seedify_associations(instance, ce.belongs_to_schema(instance)) +
37
- serialize(instance) +
41
+ serialize(instance, ce) +
38
42
  seedify_associations(instance, ce.non_belongs_to_schema(instance))
39
43
  end
40
44
  end
@@ -87,8 +91,8 @@ module SeedReaper
87
91
  collection
88
92
  end
89
93
 
90
- def serialize(instance)
91
- seed = "#{instance.class}.new(\n#{serialize_attrs(instance)}\n).save!(validate: false)\n\n"
94
+ def serialize(instance, config_evaluator)
95
+ seed = "#{instance.class}.new(\n#{serialize_attrs(instance, config_evaluator)}\n).save!(validate: false)\n\n"
92
96
  hashed_seed = Digest::SHA2.hexdigest(seed)
93
97
  return '' if @serialized.include?(hashed_seed)
94
98
 
@@ -96,9 +100,10 @@ module SeedReaper
96
100
  seed
97
101
  end
98
102
 
99
- def serialize_attrs(instance)
103
+ def serialize_attrs(instance, config_evaluator)
100
104
  instance.attributes.to_h.reduce('') do |attr_str, (k, v)|
101
- attr_str += "\s\s#{k}: #{ValueSerializer.new(v).serialized},\n"
105
+ nullify = [config_evaluator.nullify].flatten.compact.map(&:to_s).include?(k.to_s)
106
+ attr_str += "\s\s#{k}: #{ValueSerializer.new(v).serialized(nullify: nullify)},\n"
102
107
  end[0...-2]
103
108
  end
104
109
  end
@@ -6,14 +6,14 @@ module SeedReaper
6
6
  @value = value
7
7
  end
8
8
 
9
- def serialized
9
+ def serialized(nullify: false)
10
10
  @serialized ||=
11
- if @value.nil?
11
+ if nullify || @value.nil?
12
12
  "nil"
13
13
  elsif @value.is_a?(Integer)
14
14
  @value
15
15
  else
16
- "%q{#{@value}}"
16
+ "%q{#{@value.to_s.gsub(/({|})/) { |c| "\\#{c}" }}}"
17
17
  end
18
18
  end
19
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SeedReaper
4
- VERSION = '0.0.5'
4
+ VERSION = '0.0.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seed_reaper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Butts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-23 00:00:00.000000000 Z
11
+ date: 2022-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport