seed_reaper 0.0.5 → 0.0.8

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