data_seeder 0.0.5 → 1.0.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/README.md +71 -98
- data/app/models/data_seeder/seed_file.rb +54 -14
- data/lib/data_seeder.rb +30 -10
- data/lib/data_seeder/config.rb +39 -17
- data/lib/data_seeder/loader.rb +80 -85
- data/lib/data_seeder/loader/csv.rb +2 -1
- data/lib/data_seeder/loader/txt.rb +1 -6
- data/lib/data_seeder/loader/yaml.rb +1 -1
- data/lib/data_seeder/version.rb +1 -1
- data/test/dummy/app/models/app_error_data_seeder.rb +10 -8
- data/test/dummy/app/models/country.rb +0 -12
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/seed.test/{bar.err → bar_err/bar.err} +0 -0
- data/test/dummy/db/seed.test/countries_csv/countries.cfg +9 -0
- data/test/dummy/db/seed.test/countries_csv/countries.csv +249 -0
- data/test/dummy/db/seed.test/countries_txt/countries.cfg +6 -0
- data/test/dummy/db/seed.test/{countries.txt → countries_txt/countries.txt} +0 -0
- data/test/dummy/db/seed.test/{foo.err → foo_err/foo.err} +0 -0
- data/test/dummy/db/seed.test/{states.csv → states_csv/states.csv} +0 -0
- data/test/dummy/db/seed.test/states_json/states.cfg +1 -0
- data/test/dummy/db/seed.test/{states.json → states_json/states.json} +0 -1
- data/test/dummy/db/seed.test/states_txt/states.cfg +6 -0
- data/test/dummy/db/seed.test/{states.txt → states_txt/states.txt} +0 -1
- data/test/dummy/db/seed.test/states_yml/states.cfg +1 -0
- data/test/dummy/db/seed.test/{states.yml → states_yml/states.yml} +0 -1
- data/test/dummy/db/seed.test/{zulu.err → zulu_err/zulu.err} +0 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +126 -0
- data/test/dummy/log/test.log +90945 -0
- data/test/models/data_seeder_test.rb +50 -30
- metadata +33 -20
- data/lib/data_seeder/logger.rb +0 -15
@@ -3,8 +3,8 @@ require 'test_helper'
|
|
3
3
|
describe DataSeeder, :model do
|
4
4
|
describe 'when run with txt files' do
|
5
5
|
before do
|
6
|
-
@name
|
7
|
-
@
|
6
|
+
@name = 'test.txt'
|
7
|
+
@seed_dirs = setup_seed_dirs(@name, 'countries_txt', 'states_txt')
|
8
8
|
end
|
9
9
|
|
10
10
|
after do
|
@@ -12,18 +12,18 @@ describe DataSeeder, :model do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'should load seed files' do
|
15
|
-
modify_seed_file(@name, 'states.txt') do |body|
|
15
|
+
modify_seed_file(@name, 'states_txt/states.txt') do |body|
|
16
16
|
body.sub('KY Kentucky', 'KV Kentucky').sub('VT Vermont', 'VT Vermount')
|
17
17
|
end
|
18
|
-
DataSeeder.run(
|
18
|
+
DataSeeder.run(seed_dirs: @seed_dirs)
|
19
19
|
assert_equal 50, State.count
|
20
20
|
assert_equal 'United States', Country.find_by(code: 'US').try(:name)
|
21
21
|
assert_equal 'Kentucky', State.find_by(code: 'KV').try(:name)
|
22
22
|
assert_equal 'Vermount', State.find_by(code: 'VT').try(:name)
|
23
|
-
modify_seed_file(@name, 'states.txt') do |body|
|
23
|
+
modify_seed_file(@name, 'states_txt/states.txt') do |body|
|
24
24
|
body.sub('KV Kentucky', 'KY Kentucky').sub('VT Vermount', 'VT Vermont')
|
25
25
|
end
|
26
|
-
DataSeeder.run
|
26
|
+
DataSeeder.run
|
27
27
|
assert_equal 50, State.count
|
28
28
|
assert_equal 'Kentucky', State.find_by(code: 'KY').try(:name)
|
29
29
|
assert_equal 'Vermont', State.find_by(code: 'VT').try(:name)
|
@@ -34,9 +34,10 @@ describe DataSeeder, :model do
|
|
34
34
|
%w(csv json yml).each do |loader_type|
|
35
35
|
describe "when run with #{loader_type} files" do
|
36
36
|
before do
|
37
|
-
@name
|
38
|
-
@
|
39
|
-
@
|
37
|
+
@name = "test.#{loader_type}"
|
38
|
+
@dir = "states_#{loader_type}"
|
39
|
+
@file = "#{@dir}/states.#{loader_type}"
|
40
|
+
@seed_dirs = setup_seed_dirs(@name, @dir)
|
40
41
|
end
|
41
42
|
|
42
43
|
after do
|
@@ -47,13 +48,13 @@ describe DataSeeder, :model do
|
|
47
48
|
modify_seed_file(@name, @file) do |body|
|
48
49
|
body.sub('Alaska', 'Alaskaska')
|
49
50
|
end
|
50
|
-
DataSeeder.run(
|
51
|
+
DataSeeder.run(seed_dirs: @seed_dirs)
|
51
52
|
assert_equal 50, State.count
|
52
53
|
assert_equal 'Alaskaska', State.find_by(code: 'AK').try(:name)
|
53
54
|
modify_seed_file(@name, @file) do |body|
|
54
55
|
body.sub('Alaskaska', 'Alaska')
|
55
56
|
end
|
56
|
-
DataSeeder.run(
|
57
|
+
DataSeeder.run(seed_dirs: @seed_dirs)
|
57
58
|
assert_equal 50, State.count
|
58
59
|
assert_equal 'Alaska', State.find_by(code: 'AK').try(:name)
|
59
60
|
end
|
@@ -62,9 +63,9 @@ describe DataSeeder, :model do
|
|
62
63
|
|
63
64
|
describe 'when run with use_line_number_as_id' do
|
64
65
|
before do
|
65
|
-
@name
|
66
|
-
@
|
67
|
-
@
|
66
|
+
@name = "test.use_line_number_as_id"
|
67
|
+
@dir = "states_csv"
|
68
|
+
@seed_dirs = setup_seed_dirs(@name, @dir)
|
68
69
|
end
|
69
70
|
|
70
71
|
after do
|
@@ -72,21 +73,39 @@ describe DataSeeder, :model do
|
|
72
73
|
end
|
73
74
|
|
74
75
|
it 'should use the line number as the id' do
|
75
|
-
modify_seed_file(@name, 'states.csv') do |body|
|
76
|
+
modify_seed_file(@name, 'states_csv/states.csv') do |body|
|
76
77
|
# Remove the id column
|
77
78
|
body.gsub(/^.*?,/,'')
|
78
79
|
end
|
79
|
-
File.open(seed_file_name(@name, 'states.cfg'), 'w') {|f| f.write '{ use_line_number_as_id: true }'}
|
80
|
-
DataSeeder.run(
|
80
|
+
File.open(seed_file_name(@name, 'states_csv/states.cfg'), 'w') {|f| f.write '{ use_line_number_as_id: true }'}
|
81
|
+
DataSeeder.run(seed_dirs: @seed_dirs)
|
81
82
|
assert_equal 'AK', State.find(1).code
|
82
83
|
assert_equal 'WY', State.find(50).code
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
87
|
+
describe 'when run with postprocess config' do
|
88
|
+
before do
|
89
|
+
@name = "test.postprocess"
|
90
|
+
@dir = "countries_csv"
|
91
|
+
@seed_dirs = setup_seed_dirs(@name, @dir)
|
92
|
+
end
|
93
|
+
|
94
|
+
after do
|
95
|
+
cleanup_seed_dir(@name)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should allow the postprocess config to modify attributes' do
|
99
|
+
DataSeeder.run(seed_dirs: @seed_dirs)
|
100
|
+
assert_equal 'United States', Country.find_by(code: 'US').try(:name)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
|
86
105
|
describe 'when run with a custom loader' do
|
87
106
|
before do
|
88
|
-
@name
|
89
|
-
@
|
107
|
+
@name = 'test.custom'
|
108
|
+
@seed_dirs = setup_seed_dirs(@name, 'states_txt', 'foo_err', 'bar_err')
|
90
109
|
end
|
91
110
|
|
92
111
|
after do
|
@@ -94,10 +113,10 @@ describe DataSeeder, :model do
|
|
94
113
|
end
|
95
114
|
|
96
115
|
it 'should load seed files' do
|
97
|
-
modify_seed_file(@name, 'states.txt') do |body|
|
116
|
+
modify_seed_file(@name, 'states_txt/states.txt') do |body|
|
98
117
|
body.sub('KY Kentucky', 'KV Kentucky').sub('VT Vermont', 'VT Vermount')
|
99
118
|
end
|
100
|
-
DataSeeder.run(
|
119
|
+
DataSeeder.run(seed_dirs: @seed_dirs, loaders: {'err' => AppErrorDataSeeder})
|
101
120
|
assert_equal 50, State.count
|
102
121
|
assert_equal 'Kentucky', State.find_by(code: 'KV').try(:name)
|
103
122
|
assert_equal 'Vermount', State.find_by(code: 'VT').try(:name)
|
@@ -108,13 +127,13 @@ describe DataSeeder, :model do
|
|
108
127
|
assert 3, bar.app_errors.count
|
109
128
|
assert_equal 'Error message for B1', bar.app_errors.find_by(code: 'B1').try(:message)
|
110
129
|
|
111
|
-
modify_seed_file(@name, 'states.txt') do |body|
|
130
|
+
modify_seed_file(@name, 'states_txt/states.txt') do |body|
|
112
131
|
body.sub('KV Kentucky', 'KY Kentucky').sub('VT Vermount', 'VT Vermont')
|
113
132
|
end
|
114
|
-
modify_seed_file(@name, 'bar.err') do |body|
|
133
|
+
modify_seed_file(@name, 'bar_err/bar.err') do |body|
|
115
134
|
body.sub('B1 Error message for B1', 'C1 Error message for C1')
|
116
135
|
end
|
117
|
-
DataSeeder.run(
|
136
|
+
DataSeeder.run(seed_dirs: @seed_dirs, loaders: {'err' => AppErrorDataSeeder})
|
118
137
|
assert_equal 50, State.count
|
119
138
|
assert_equal 'Kentucky', State.find_by(code: 'KY').try(:name)
|
120
139
|
assert_equal 'Vermont', State.find_by(code: 'VT').try(:name)
|
@@ -127,8 +146,9 @@ describe DataSeeder, :model do
|
|
127
146
|
assert_nil bar.app_errors.find_by(code: 'B1')
|
128
147
|
assert_equal 'Error message for C1', bar.app_errors.find_by(code: 'C1').try(:message)
|
129
148
|
|
130
|
-
FileUtils.
|
131
|
-
DataSeeder.
|
149
|
+
FileUtils.cp_r(Rails.root.join('db', 'seed.test', 'zulu_err'), seed_dir_name(@name))
|
150
|
+
DataSeeder.config.add_seed_dir(seed_file_name(@name, 'zulu_err'))
|
151
|
+
DataSeeder.run
|
132
152
|
assert_equal 50, State.count
|
133
153
|
assert_equal 3, App.count
|
134
154
|
zulu = App.find_by(name: 'zulu')
|
@@ -139,13 +159,13 @@ describe DataSeeder, :model do
|
|
139
159
|
end
|
140
160
|
|
141
161
|
|
142
|
-
def
|
162
|
+
def setup_seed_dirs(name, *dirs)
|
143
163
|
dir_name = seed_dir_name(name)
|
144
164
|
FileUtils.mkdir_p(dir_name)
|
145
|
-
|
146
|
-
FileUtils.
|
165
|
+
return dirs.map do |dir|
|
166
|
+
FileUtils.cp_r(Rails.root.join('db', 'seed.test', dir), dir_name)
|
167
|
+
"#{dir_name}/#{dir}"
|
147
168
|
end
|
148
|
-
return dir_name
|
149
169
|
end
|
150
170
|
|
151
171
|
def cleanup_seed_dir(name)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_seeder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Pardee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -43,7 +43,6 @@ files:
|
|
43
43
|
- lib/data_seeder/loader/json.rb
|
44
44
|
- lib/data_seeder/loader/txt.rb
|
45
45
|
- lib/data_seeder/loader/yaml.rb
|
46
|
-
- lib/data_seeder/logger.rb
|
47
46
|
- lib/data_seeder/version.rb
|
48
47
|
- test/dummy/Rakefile
|
49
48
|
- test/dummy/app/models/app.rb
|
@@ -63,19 +62,26 @@ files:
|
|
63
62
|
- test/dummy/config/environments/test.rb
|
64
63
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
65
64
|
- test/dummy/config/initializers/inflections.rb
|
65
|
+
- test/dummy/db/development.sqlite3
|
66
66
|
- test/dummy/db/migrate/20150313022149_create_countries.rb
|
67
67
|
- test/dummy/db/migrate/20150313022228_create_states.rb
|
68
68
|
- test/dummy/db/migrate/20150313172634_create_apps.rb
|
69
69
|
- test/dummy/db/migrate/20150313172719_create_app_errors.rb
|
70
70
|
- test/dummy/db/schema.rb
|
71
|
-
- test/dummy/db/seed.test/bar.err
|
72
|
-
- test/dummy/db/seed.test/countries.
|
73
|
-
- test/dummy/db/seed.test/
|
74
|
-
- test/dummy/db/seed.test/
|
75
|
-
- test/dummy/db/seed.test/
|
76
|
-
- test/dummy/db/seed.test/
|
77
|
-
- test/dummy/db/seed.test/states.
|
78
|
-
- test/dummy/db/seed.test/
|
71
|
+
- test/dummy/db/seed.test/bar_err/bar.err
|
72
|
+
- test/dummy/db/seed.test/countries_csv/countries.cfg
|
73
|
+
- test/dummy/db/seed.test/countries_csv/countries.csv
|
74
|
+
- test/dummy/db/seed.test/countries_txt/countries.cfg
|
75
|
+
- test/dummy/db/seed.test/countries_txt/countries.txt
|
76
|
+
- test/dummy/db/seed.test/foo_err/foo.err
|
77
|
+
- test/dummy/db/seed.test/states_csv/states.csv
|
78
|
+
- test/dummy/db/seed.test/states_json/states.cfg
|
79
|
+
- test/dummy/db/seed.test/states_json/states.json
|
80
|
+
- test/dummy/db/seed.test/states_txt/states.cfg
|
81
|
+
- test/dummy/db/seed.test/states_txt/states.txt
|
82
|
+
- test/dummy/db/seed.test/states_yml/states.cfg
|
83
|
+
- test/dummy/db/seed.test/states_yml/states.yml
|
84
|
+
- test/dummy/db/seed.test/zulu_err/zulu.err
|
79
85
|
- test/dummy/db/test.sqlite3
|
80
86
|
- test/dummy/log/development.log
|
81
87
|
- test/dummy/log/test.log
|
@@ -109,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
115
|
version: '0'
|
110
116
|
requirements: []
|
111
117
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.
|
118
|
+
rubygems_version: 2.5.1
|
113
119
|
signing_key:
|
114
120
|
specification_version: 4
|
115
121
|
summary: Seed your Rails database
|
@@ -131,19 +137,26 @@ test_files:
|
|
131
137
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
132
138
|
- test/dummy/config/initializers/inflections.rb
|
133
139
|
- test/dummy/config.ru
|
140
|
+
- test/dummy/db/development.sqlite3
|
134
141
|
- test/dummy/db/migrate/20150313022149_create_countries.rb
|
135
142
|
- test/dummy/db/migrate/20150313022228_create_states.rb
|
136
143
|
- test/dummy/db/migrate/20150313172634_create_apps.rb
|
137
144
|
- test/dummy/db/migrate/20150313172719_create_app_errors.rb
|
138
145
|
- test/dummy/db/schema.rb
|
139
|
-
- test/dummy/db/seed.test/bar.err
|
140
|
-
- test/dummy/db/seed.test/countries.
|
141
|
-
- test/dummy/db/seed.test/
|
142
|
-
- test/dummy/db/seed.test/
|
143
|
-
- test/dummy/db/seed.test/
|
144
|
-
- test/dummy/db/seed.test/
|
145
|
-
- test/dummy/db/seed.test/states.
|
146
|
-
- test/dummy/db/seed.test/
|
146
|
+
- test/dummy/db/seed.test/bar_err/bar.err
|
147
|
+
- test/dummy/db/seed.test/countries_csv/countries.cfg
|
148
|
+
- test/dummy/db/seed.test/countries_csv/countries.csv
|
149
|
+
- test/dummy/db/seed.test/countries_txt/countries.cfg
|
150
|
+
- test/dummy/db/seed.test/countries_txt/countries.txt
|
151
|
+
- test/dummy/db/seed.test/foo_err/foo.err
|
152
|
+
- test/dummy/db/seed.test/states_csv/states.csv
|
153
|
+
- test/dummy/db/seed.test/states_json/states.cfg
|
154
|
+
- test/dummy/db/seed.test/states_json/states.json
|
155
|
+
- test/dummy/db/seed.test/states_txt/states.cfg
|
156
|
+
- test/dummy/db/seed.test/states_txt/states.txt
|
157
|
+
- test/dummy/db/seed.test/states_yml/states.cfg
|
158
|
+
- test/dummy/db/seed.test/states_yml/states.yml
|
159
|
+
- test/dummy/db/seed.test/zulu_err/zulu.err
|
147
160
|
- test/dummy/db/test.sqlite3
|
148
161
|
- test/dummy/log/development.log
|
149
162
|
- test/dummy/log/test.log
|
data/lib/data_seeder/logger.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module DataSeeder
|
2
|
-
class Logger < ::Logger
|
3
|
-
attr_accessor :verbose
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
super($stdout)
|
7
|
-
@verbose = true
|
8
|
-
self.formatter = ->(severity, datetime, progname, msg) { "#{msg}\n" }
|
9
|
-
end
|
10
|
-
|
11
|
-
def info(arg='', &block)
|
12
|
-
super if @verbose
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|