planter 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/Rakefile +56 -9
- data/lib/generators/planter/initializer_generator.rb +2 -2
- data/lib/generators/planter/seeder_generator.rb +2 -2
- data/lib/planter/config.rb +2 -2
- data/lib/planter/railtie.rb +4 -4
- data/lib/planter/seeder.rb +7 -7
- data/lib/planter/version.rb +3 -3
- data/lib/planter.rb +8 -8
- data/lib/tasks/planter_tasks.rake +4 -4
- metadata +42 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e17464950e5c9388e88fa5c7567920ec3e71543f67440d8ac2ae61ff5d058f1e
|
|
4
|
+
data.tar.gz: a5ceb84a52cdf6f04f34283ab1fb96dcffbd3c59bf0e84a7926ee7c80ef8a6ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 21a073b1fdbbdad594f328ac020382d72fc48d5ceb08103727748eab37b0138ed88e4f07d0e3a40a4dc2d881e7cefce94ef8311fc16d3e87c747e23ca4a229db
|
|
7
|
+
data.tar.gz: 5b45a2c739c47c184b2fc9a3f1dc1b2b766122565e780b77a162a9a5767fca665b972f4f62af88182f51b02a4c031239d1019788ce93462275f80e950d13b420
|
data/Rakefile
CHANGED
|
@@ -1,18 +1,65 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
1
|
+
require "bundler/setup"
|
|
2
|
+
require "bundler/gem_tasks"
|
|
3
|
+
require "rake/testtask"
|
|
4
|
+
require "rdoc/task"
|
|
5
|
+
require "standard/rake"
|
|
5
6
|
|
|
6
7
|
Rake::TestTask.new(:test) do |t|
|
|
7
|
-
t.libs <<
|
|
8
|
-
t.pattern =
|
|
8
|
+
t.libs << "test"
|
|
9
|
+
t.pattern = "test/**/*_test.rb"
|
|
9
10
|
t.verbose = false
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
RDoc::Task.new do |rdoc|
|
|
13
|
-
rdoc.main =
|
|
14
|
-
rdoc.rdoc_dir =
|
|
15
|
-
rdoc.rdoc_files.include(
|
|
14
|
+
rdoc.main = "README.md"
|
|
15
|
+
rdoc.rdoc_dir = "docs"
|
|
16
|
+
rdoc.rdoc_files.include("README.md", "lib/**/*.rb")
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
task default: :test
|
|
20
|
+
|
|
21
|
+
namespace :version do
|
|
22
|
+
desc "Print the current version from the version.rb file"
|
|
23
|
+
task :current do
|
|
24
|
+
puts Planter::VERSION
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
namespace :increment do
|
|
28
|
+
desc "Increment the version's PATCH level"
|
|
29
|
+
task :patch do
|
|
30
|
+
File.join(__dir__, "lib", "planter", "version.rb").then do |version_file|
|
|
31
|
+
File.write(
|
|
32
|
+
version_file,
|
|
33
|
+
File.read(version_file).sub(/(PATCH\s=\s)(\d+)/) { "#{$1}#{$2.next}" }
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
system("bundle lock")
|
|
37
|
+
end
|
|
38
|
+
desc "Increment the version's MINOR level"
|
|
39
|
+
task :minor do
|
|
40
|
+
File.join(__dir__, "lib", "planter", "version.rb").then do |version_file|
|
|
41
|
+
File.write(
|
|
42
|
+
version_file,
|
|
43
|
+
File.read(version_file)
|
|
44
|
+
.sub(/(PATCH\s=\s)(\d+)/) { "#{$1}0" }
|
|
45
|
+
.sub(/(MINOR\s=\s)(\d+)/) { "#{$1}#{$2.next}" }
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
system("bundle lock")
|
|
49
|
+
end
|
|
50
|
+
desc "Increment the version's MAJOR level"
|
|
51
|
+
task :major do
|
|
52
|
+
File.join(__dir__, "lib", "planter", "version.rb").then do |version_file|
|
|
53
|
+
File.write(
|
|
54
|
+
version_file,
|
|
55
|
+
File.read(version_file)
|
|
56
|
+
.sub(/(PATCH\s=\s)(\d+)/) { "#{$1}0" }
|
|
57
|
+
.sub(/(MINOR\s=\s)(\d+)/) { "#{$1}0" }
|
|
58
|
+
.sub(/(MAJOR\s=\s)(\d+)/) { "#{$1}#{$2.next}" }
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
system("bundle lock")
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Planter
|
|
2
2
|
module Generators
|
|
3
3
|
class InitializerGenerator < Rails::Generators::Base
|
|
4
|
-
desc
|
|
4
|
+
desc "Genrates an initializer for Planter at config/initializers/planter.rb"
|
|
5
5
|
|
|
6
6
|
def create_initializer_file
|
|
7
|
-
create_file
|
|
7
|
+
create_file "config/initializers/planter.rb", <<~EOF
|
|
8
8
|
require 'planter'
|
|
9
9
|
|
|
10
10
|
Planter.configure do |config|
|
|
@@ -6,7 +6,7 @@ module Planter
|
|
|
6
6
|
desc "Creates a seeder file at #{::Planter.config.seeders_directory}"
|
|
7
7
|
|
|
8
8
|
def generate_seeders
|
|
9
|
-
seeder ==
|
|
9
|
+
(seeder == "ALL") ? tables.each { |t| generate(t) } : generate(seeder)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
private
|
|
@@ -25,7 +25,7 @@ module Planter
|
|
|
25
25
|
end
|
|
26
26
|
EOF
|
|
27
27
|
|
|
28
|
-
inject_into_file
|
|
28
|
+
inject_into_file "config/initializers/planter.rb",
|
|
29
29
|
" #{seeder}\n",
|
|
30
30
|
before: /^\s*\]\s*$/
|
|
31
31
|
end
|
data/lib/planter/config.rb
CHANGED
|
@@ -55,8 +55,8 @@ module Planter
|
|
|
55
55
|
# Create a new instance of the config.
|
|
56
56
|
def initialize
|
|
57
57
|
@quiet = false
|
|
58
|
-
@seeders_directory = ::File.join(
|
|
59
|
-
@csv_files_directory = ::File.join(
|
|
58
|
+
@seeders_directory = ::File.join("db", "seeds")
|
|
59
|
+
@csv_files_directory = ::File.join("db", "seed_files")
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
data/lib/planter/railtie.rb
CHANGED
|
@@ -4,10 +4,10 @@ module Planter
|
|
|
4
4
|
class Railtie < ::Rails::Railtie # :nodoc:
|
|
5
5
|
rake_tasks do
|
|
6
6
|
load File.join(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
__dir__,
|
|
8
|
+
"..",
|
|
9
|
+
"tasks",
|
|
10
|
+
"planter_tasks.rake"
|
|
11
11
|
)
|
|
12
12
|
end
|
|
13
13
|
end
|
data/lib/planter/seeder.rb
CHANGED
|
@@ -219,14 +219,14 @@ module Planter
|
|
|
219
219
|
erb_trim_mode: nil
|
|
220
220
|
)
|
|
221
221
|
unless SEEDING_METHODS.include?(seed_method.intern)
|
|
222
|
-
raise ArgumentError, "Method must be: #{SEEDING_METHODS.join(
|
|
222
|
+
raise ArgumentError, "Method must be: #{SEEDING_METHODS.join(", ")}"
|
|
223
223
|
end
|
|
224
224
|
|
|
225
225
|
self.seed_method = seed_method
|
|
226
226
|
self.number_of_records = number_of_records
|
|
227
|
-
self.model = model || to_s.delete_suffix(
|
|
227
|
+
self.model = model || to_s.delete_suffix("Seeder").singularize
|
|
228
228
|
self.parent = parent
|
|
229
|
-
self.csv_name = csv_name || to_s.delete_suffix(
|
|
229
|
+
self.csv_name = csv_name || to_s.delete_suffix("Seeder").underscore
|
|
230
230
|
self.erb_trim_mode = erb_trim_mode || Planter.config.erb_trim_mode
|
|
231
231
|
self.unique_columns =
|
|
232
232
|
case unique_columns
|
|
@@ -275,16 +275,16 @@ module Planter
|
|
|
275
275
|
when :csv
|
|
276
276
|
raise "Couldn't find csv for #{model}" unless full_csv_name
|
|
277
277
|
when :data_array
|
|
278
|
-
raise
|
|
278
|
+
raise "data is not defined in the seeder" if public_send(:data).nil?
|
|
279
279
|
else
|
|
280
|
-
raise
|
|
280
|
+
raise "seeding_method not defined in the seeder"
|
|
281
281
|
end
|
|
282
282
|
end
|
|
283
283
|
|
|
284
284
|
def apply_transformations(record)
|
|
285
285
|
return record if public_send(:transformations).nil?
|
|
286
286
|
|
|
287
|
-
|
|
287
|
+
record.map { |field, value| map_record(field, value, record) }.to_h
|
|
288
288
|
end
|
|
289
289
|
|
|
290
290
|
def map_record(field, value, record)
|
|
@@ -338,7 +338,7 @@ module Planter
|
|
|
338
338
|
|
|
339
339
|
def extract_data_from_csv
|
|
340
340
|
contents = ::File.read(full_csv_name)
|
|
341
|
-
if full_csv_name.include?(
|
|
341
|
+
if full_csv_name.include?(".erb")
|
|
342
342
|
contents = ERB.new(contents, trim_mode: erb_trim_mode).result(binding)
|
|
343
343
|
end
|
|
344
344
|
|
data/lib/planter/version.rb
CHANGED
|
@@ -15,7 +15,7 @@ module Planter
|
|
|
15
15
|
# Minor version.
|
|
16
16
|
#
|
|
17
17
|
# @return [Integer]
|
|
18
|
-
MINOR =
|
|
18
|
+
MINOR = 3
|
|
19
19
|
|
|
20
20
|
##
|
|
21
21
|
# Patch version.
|
|
@@ -38,7 +38,7 @@ module Planter
|
|
|
38
38
|
#
|
|
39
39
|
# @return [String]
|
|
40
40
|
def to_s
|
|
41
|
-
to_a.join(
|
|
41
|
+
to_a.join(".")
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
##
|
|
@@ -46,7 +46,7 @@ module Planter
|
|
|
46
46
|
#
|
|
47
47
|
# @return [Hash]
|
|
48
48
|
def to_h
|
|
49
|
-
|
|
49
|
+
%i[major minor patch].zip(to_a).to_h
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
data/lib/planter.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
3
|
+
require "csv"
|
|
4
|
+
require "erb"
|
|
5
|
+
require "planter/version"
|
|
6
|
+
require "planter/railtie"
|
|
7
|
+
require "planter/config"
|
|
8
|
+
require "planter/seeder"
|
|
9
9
|
|
|
10
10
|
##
|
|
11
11
|
# The main module for the plugin. It nicely wraps the +Planter::Config+ class
|
|
@@ -68,8 +68,8 @@ module Planter
|
|
|
68
68
|
# # db/seeds.rb, assuming your +configure+ block is in an initializer.
|
|
69
69
|
# Planter.seed
|
|
70
70
|
def seed
|
|
71
|
-
seeders = ENV[
|
|
72
|
-
raise
|
|
71
|
+
seeders = ENV["SEEDERS"]&.split(",") || config.seeders&.map(&:to_s)
|
|
72
|
+
raise "No seeders specified" if seeders.blank?
|
|
73
73
|
|
|
74
74
|
seeders.each do |s|
|
|
75
75
|
require Rails.root.join(config.seeders_directory, "#{s}_seeder.rb").to_s
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "planter"
|
|
2
2
|
|
|
3
3
|
namespace :planter do
|
|
4
|
-
desc
|
|
4
|
+
desc "Seed application. Use this to keep planter separate from db:seed"
|
|
5
5
|
task seed: :environment do
|
|
6
6
|
Planter.configure do |config|
|
|
7
7
|
# NOTE: the seed method already looks for ENV['SEEDERS']
|
|
8
|
-
ENV[
|
|
9
|
-
ENV[
|
|
8
|
+
ENV["SEEDERS_DIRECTORY"] && config.seeders_directory = ENV["SEEDERS_DIRECTORY"]
|
|
9
|
+
ENV["CSV_FILES_DIRECTORY"] && config.csv_files_directory = ENV["CSV_FILES_DIRECTORY"]
|
|
10
10
|
end
|
|
11
11
|
Planter.seed
|
|
12
12
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,62 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: planter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Evan Gray
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: csv
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
13
26
|
- !ruby/object:Gem::Dependency
|
|
14
27
|
name: rails
|
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
|
16
29
|
requirements:
|
|
17
|
-
- - "
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 8.1.3
|
|
33
|
+
- - "<"
|
|
18
34
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
35
|
+
version: '9.0'
|
|
20
36
|
type: :runtime
|
|
21
37
|
prerelease: false
|
|
22
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
39
|
requirements:
|
|
24
|
-
- - "
|
|
40
|
+
- - ">="
|
|
25
41
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
42
|
+
version: 8.1.3
|
|
43
|
+
- - "<"
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '9.0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: standard
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '0'
|
|
53
|
+
type: :development
|
|
54
|
+
prerelease: false
|
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '0'
|
|
27
60
|
description: Create a seeder for each table in your database, and easily seed from
|
|
28
61
|
CSV or custom methods
|
|
29
62
|
email:
|
|
@@ -51,7 +84,6 @@ metadata:
|
|
|
51
84
|
homepage_uri: https://github.com/evanthegrayt/planter
|
|
52
85
|
source_code_uri: https://github.com/evanthegrayt/planter
|
|
53
86
|
documentation_uri: https://evanthegrayt.github.io/planter/
|
|
54
|
-
post_install_message:
|
|
55
87
|
rdoc_options: []
|
|
56
88
|
require_paths:
|
|
57
89
|
- lib
|
|
@@ -59,15 +91,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
59
91
|
requirements:
|
|
60
92
|
- - ">="
|
|
61
93
|
- !ruby/object:Gem::Version
|
|
62
|
-
version:
|
|
94
|
+
version: 3.2.0
|
|
63
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
96
|
requirements:
|
|
65
97
|
- - ">="
|
|
66
98
|
- !ruby/object:Gem::Version
|
|
67
99
|
version: '0'
|
|
68
100
|
requirements: []
|
|
69
|
-
rubygems_version:
|
|
70
|
-
signing_key:
|
|
101
|
+
rubygems_version: 4.0.10
|
|
71
102
|
specification_version: 4
|
|
72
103
|
summary: Framework for seeding rails applications.
|
|
73
104
|
test_files: []
|