seed_reaper 0.0.8 → 0.0.11

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: 338334877dd8903cc4383daa7a0ba5145b03d826e34caadb895d2dd7315ad6e5
4
- data.tar.gz: 852714966712a98fe5787bc2b217f2ec83213a95d55c6ab07ba6d73d0d252f14
3
+ metadata.gz: b5280bac77c80e43889017709b2bf0337e3723b16a327f78382d8994d9b0ee40
4
+ data.tar.gz: 36c9cd206f8a10243554268b29233558cb9bd39b9d71a0af51e1c397a98f381b
5
5
  SHA512:
6
- metadata.gz: 343b4809b733469b8efbe44a013e33d02ef69e51473b908e339577c68df7e64db4569123a87f768e291470e9d97e0814e78c5b283dc0ce86ef09328e1f6810fe
7
- data.tar.gz: 5d92b810c6b1c7dadfc24ee5d184676871b93f16b9a84c363e90206593e5f3c62b1f4f04eeb2ac1bedbc56f33142d64d3a749e81db6a495fe34fbd865c9f26d9
6
+ metadata.gz: 9dead8ed048863e62f9a0286b486bbf494602970d171671bdbe2eed43ff0eb7454297113e68947f8758db0375f3f297574c60ccdec3e0ccaf9b042d3238df4a8
7
+ data.tar.gz: 11715f9d395c61bd36b12ddccceef6e5d03b15f584b244bf7d32d3a1660bba2fb2598558ed869a921dd65cd39953ffbedecd6a7cde691bc32fa877c3b6fa4e6b
@@ -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 nullify class_name].each do |meta_field|
43
+ %i[count joins nullify class_name table_only].each do |meta_field|
44
44
  define_method meta_field do
45
45
  meta(meta_field)
46
46
  end
@@ -7,8 +7,8 @@ module SeedReaper
7
7
  railtie_name :seed_reaper
8
8
 
9
9
  rake_tasks do
10
- path = File.expand_path(__dir__)
11
- Dir.glob("#{path}/tasks/**/*.rake").each { |f| load f }
10
+ spec = Gem::Specification.find_by_name 'seed_reaper'
11
+ load "#{spec.gem_dir}/lib/tasks/seed_reaper.rake"
12
12
  end
13
13
  end
14
14
  end
@@ -12,7 +12,11 @@ module SeedReaper
12
12
  end
13
13
 
14
14
  def seedify
15
- seedify_collection(base_model, base_config)
15
+ if base_config_evaluator.table_only
16
+ seedify_table_only(@config.first[0])
17
+ else
18
+ seedify_collection(base_model, base_config)
19
+ end
16
20
  end
17
21
 
18
22
  private
@@ -33,6 +37,28 @@ module SeedReaper
33
37
  @base_config_evaluator ||= ConfigEvaluator.new(base_config)
34
38
  end
35
39
 
40
+ def seedify_table_only(name)
41
+ <<~UPSERT
42
+ (
43
+ Class.new(ActiveRecord::Base) do
44
+ self.table_name = :#{name}
45
+ end
46
+ ).upsert_all([
47
+ #{
48
+ [].tap do |attr_hashes|
49
+ (
50
+ Class.new(ActiveRecord::Base) do
51
+ self.table_name = name
52
+ end
53
+ ).find_each do |i|
54
+ attr_hashes << "{ #{serialize_upsert_attrs(i)} }"
55
+ end
56
+ end.join(",\n\s\s")
57
+ }
58
+ ])
59
+ UPSERT
60
+ end
61
+
36
62
  def seedify_collection(collection, config)
37
63
  ce = ConfigEvaluator.new(config)
38
64
  evaluated_collection(collection, ce).reduce('') do |str, instance|
@@ -106,5 +132,11 @@ module SeedReaper
106
132
  attr_str += "\s\s#{k}: #{ValueSerializer.new(v).serialized(nullify: nullify)},\n"
107
133
  end[0...-2]
108
134
  end
135
+
136
+ def serialize_upsert_attrs(instance)
137
+ instance.attributes.to_h.map do |(k, v)|
138
+ "#{k}: #{ValueSerializer.new(v).serialized}"
139
+ end.join(', ')
140
+ end
109
141
  end
110
142
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SeedReaper
4
- VERSION = '0.0.8'
4
+ VERSION = '0.0.11'
5
5
  end
@@ -5,11 +5,11 @@ require 'seed_reaper'
5
5
 
6
6
  namespace :seed_reaper do
7
7
  desc 'Write seeds to db/seeds/ based on config/seed_reaper.yml.'
8
- task :write do
8
+ task write: :environment do
9
9
  SeedReaper::SeedWriter.new(
10
- YAML.load(
10
+ YAML.parse(
11
11
  File.read('config/seed_reaper.yml')
12
- )
12
+ ).to_ruby
13
13
  ).write!
14
14
  end
15
15
  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.8
4
+ version: 0.0.11
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-03-02 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -143,15 +143,14 @@ executables: []
143
143
  extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
- - lib/Rakefile
147
146
  - lib/seed_reaper.rb
148
147
  - lib/seed_reaper/config_evaluator.rb
149
148
  - lib/seed_reaper/railtie.rb
150
149
  - lib/seed_reaper/seed_writer.rb
151
150
  - lib/seed_reaper/seedifier.rb
152
- - lib/seed_reaper/tasks/seed_reaper.rake
153
151
  - lib/seed_reaper/value_serializer.rb
154
152
  - lib/seed_reaper/version.rb
153
+ - lib/tasks/seed_reaper.rake
155
154
  homepage: https://github.com/dbutts2/seed_reaper
156
155
  licenses:
157
156
  - MIT
data/lib/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'seed_reaper'
4
-
5
- path = File.expand_path(__dir__)
6
- Dir.glob("#{path}/tasks/**/*.rake").each { |f| load f }