dump 1.1.0 → 1.2.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 +5 -13
- data/.gitignore +3 -1
- data/.rubocop.yml +47 -23
- data/.rubocop_todo.yml +105 -12
- data/.travis.yml +21 -31
- data/Appraisals +63 -0
- data/Gemfile +5 -26
- data/LICENSE.txt +1 -1
- data/README.markdown +3 -3
- data/dump.gemspec +11 -4
- data/lib/dump.rb +2 -2
- data/lib/dump/archive_tar_minitar.rb +1 -0
- data/lib/dump/assets.rb +1 -1
- data/lib/dump/capistrano.rb +3 -3
- data/lib/dump/capistrano/v2.rb +1 -0
- data/lib/dump/continious_timeout.rb +2 -2
- data/lib/dump/env/filter.rb +5 -5
- data/lib/dump/reader.rb +5 -1
- data/lib/dump/snapshot.rb +16 -12
- data/lib/dump/table_manipulation.rb +7 -1
- data/lib/dump/writer.rb +10 -3
- data/script/update_readme +1 -1
- data/spec/.gitignore +2 -0
- data/spec/cycle_spec.rb +1 -4
- data/spec/db/schema.rb +1 -1
- data/spec/dummy-5.0/.gitignore +21 -0
- data/spec/dummy-5.0/config.ru +5 -0
- data/spec/dummy-5.0/config/application.rb +25 -0
- data/spec/dummy-5.0/config/boot.rb +3 -0
- data/spec/dummy-5.0/config/cable.yml +9 -0
- data/spec/dummy-5.0/config/database.yml +25 -0
- data/spec/dummy-5.0/config/environment.rb +5 -0
- data/spec/dummy-5.0/config/environments/development.rb +47 -0
- data/spec/dummy-5.0/config/environments/production.rb +78 -0
- data/spec/dummy-5.0/config/environments/test.rb +42 -0
- data/spec/dummy-5.0/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/dummy-5.0/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy-5.0/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy-5.0/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy-5.0/config/initializers/inflections.rb +16 -0
- data/spec/dummy-5.0/config/initializers/mime_types.rb +4 -0
- data/spec/dummy-5.0/config/initializers/new_framework_defaults.rb +26 -0
- data/spec/dummy-5.0/config/initializers/session_store.rb +3 -0
- data/spec/dummy-5.0/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy-5.0/config/locales/en.yml +23 -0
- data/spec/dummy-5.0/config/puma.rb +47 -0
- data/spec/dummy-5.0/config/routes.rb +3 -0
- data/spec/dummy-5.0/config/secrets.yml +22 -0
- data/spec/dummy-5.0/config/spring.rb +6 -0
- data/spec/dummy-5.0/db/seeds.rb +7 -0
- data/spec/dummy-5.0/log/.keep +0 -0
- data/spec/dummy-5.1/.gitignore +23 -0
- data/spec/dummy-5.1/config.ru +5 -0
- data/spec/dummy-5.1/config/application.rb +31 -0
- data/spec/dummy-5.1/config/boot.rb +3 -0
- data/spec/dummy-5.1/config/cable.yml +10 -0
- data/spec/dummy-5.1/config/database.yml +25 -0
- data/spec/dummy-5.1/config/environment.rb +5 -0
- data/spec/dummy-5.1/config/environments/development.rb +47 -0
- data/spec/dummy-5.1/config/environments/production.rb +83 -0
- data/spec/dummy-5.1/config/environments/test.rb +42 -0
- data/spec/dummy-5.1/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/dummy-5.1/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy-5.1/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy-5.1/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy-5.1/config/initializers/inflections.rb +16 -0
- data/spec/dummy-5.1/config/initializers/mime_types.rb +4 -0
- data/spec/dummy-5.1/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy-5.1/config/locales/en.yml +33 -0
- data/spec/dummy-5.1/config/puma.rb +56 -0
- data/spec/dummy-5.1/config/routes.rb +3 -0
- data/spec/dummy-5.1/config/secrets.yml +32 -0
- data/spec/dummy-5.1/config/spring.rb +6 -0
- data/spec/dummy-5.1/db/seeds.rb +7 -0
- data/spec/dummy-5.1/log/.keep +0 -0
- data/spec/dummy-5.1/package.json +5 -0
- data/spec/dummy-5.2/.gitignore +28 -0
- data/spec/dummy-5.2/config.ru +5 -0
- data/spec/dummy-5.2/config/application.rb +33 -0
- data/spec/dummy-5.2/config/boot.rb +3 -0
- data/spec/dummy-5.2/config/cable.yml +10 -0
- data/spec/dummy-5.2/config/database.yml +25 -0
- data/spec/dummy-5.2/config/environment.rb +5 -0
- data/spec/dummy-5.2/config/environments/development.rb +54 -0
- data/spec/dummy-5.2/config/environments/production.rb +85 -0
- data/spec/dummy-5.2/config/environments/test.rb +46 -0
- data/spec/dummy-5.2/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/dummy-5.2/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy-5.2/config/initializers/content_security_policy.rb +25 -0
- data/spec/dummy-5.2/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy-5.2/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy-5.2/config/initializers/inflections.rb +16 -0
- data/spec/dummy-5.2/config/initializers/mime_types.rb +4 -0
- data/spec/dummy-5.2/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy-5.2/config/locales/en.yml +33 -0
- data/spec/dummy-5.2/config/puma.rb +34 -0
- data/spec/dummy-5.2/config/routes.rb +3 -0
- data/spec/dummy-5.2/config/spring.rb +6 -0
- data/spec/dummy-5.2/config/storage.yml +34 -0
- data/spec/dummy-5.2/db/seeds.rb +7 -0
- data/spec/dummy-5.2/package.json +5 -0
- data/spec/dummy_rails_app.rb +3 -5
- data/spec/dump/env_spec.rb +7 -7
- data/spec/dump/rails_root_spec.rb +1 -1
- data/spec/dump/reader_spec.rb +14 -14
- data/spec/dump/snapshot_spec.rb +24 -17
- data/spec/dump/table_manipulation_spec.rb +8 -5
- data/spec/dump/writer_spec.rb +3 -3
- data/spec/dump_spec.rb +1 -1
- metadata +189 -21
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
|
2
|
+
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
|
|
3
|
+
#
|
|
4
|
+
# Examples:
|
|
5
|
+
#
|
|
6
|
+
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
|
|
7
|
+
# Character.create(name: 'Luke', movie: movies.first)
|
data/spec/dummy_rails_app.rb
CHANGED
|
@@ -26,14 +26,12 @@ if (environment_path = environment_paths.find(&File.method(:exist?)))
|
|
|
26
26
|
else
|
|
27
27
|
app_path = "spec/dummy-#{version_parts.take(2).join('.')}"
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
"rails #{app_path}"
|
|
29
|
+
command = if version < '3'
|
|
30
|
+
"rails _#{version}_ #{app_path}"
|
|
31
31
|
else
|
|
32
|
-
"rails new #{app_path} -TSJ --skip-bundle"
|
|
32
|
+
"rails _#{version}_ new #{app_path} -TSJ --skip-bundle"
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
command = "RAILS_VERSION=#{version} bundle exec #{rails_command}"
|
|
36
|
-
|
|
37
35
|
abort [
|
|
38
36
|
"No dummy app for rails #{version}",
|
|
39
37
|
"Create using `#{command}`",
|
data/spec/dump/env_spec.rb
CHANGED
|
@@ -114,16 +114,16 @@ describe Dump::Env do
|
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
it 'returns hash with symbol keys for every command' do
|
|
117
|
-
expect(described_class.for_command(:create)).to eq(
|
|
118
|
-
expect(described_class.for_command(:restore)).to eq(
|
|
119
|
-
expect(described_class.for_command(:versions)).to eq(
|
|
117
|
+
expect(described_class.for_command(:create)).to eq(:desc => 'Description')
|
|
118
|
+
expect(described_class.for_command(:restore)).to eq(:like => 'Version')
|
|
119
|
+
expect(described_class.for_command(:versions)).to eq(:like => 'Version')
|
|
120
120
|
expect(described_class.for_command(:bad)).to eq({})
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
it 'returns hash with symbol keys for every command when asking for string keys' do
|
|
124
|
-
expect(described_class.for_command(:create, true)).to eq(
|
|
125
|
-
expect(described_class.for_command(:restore, true)).to eq(
|
|
126
|
-
expect(described_class.for_command(:versions, true)).to eq(
|
|
124
|
+
expect(described_class.for_command(:create, true)).to eq('DESC' => 'Description')
|
|
125
|
+
expect(described_class.for_command(:restore, true)).to eq('LIKE' => 'Version')
|
|
126
|
+
expect(described_class.for_command(:versions, true)).to eq('LIKE' => 'Version')
|
|
127
127
|
expect(described_class.for_command(:bad, true)).to eq({})
|
|
128
128
|
end
|
|
129
129
|
end
|
|
@@ -133,7 +133,7 @@ describe Dump::Env do
|
|
|
133
133
|
it 'converts keys to strings' do
|
|
134
134
|
@env = {:desc => 'text', :tags => 'a b c', 'LEAVE' => 'none', 'OTHER' => 'data'}
|
|
135
135
|
described_class.stringify!(@env)
|
|
136
|
-
expect(@env).to eq(
|
|
136
|
+
expect(@env).to eq('DESC' => 'text', 'TAGS' => 'a b c', 'LEAVE' => 'none', 'OTHER' => 'data')
|
|
137
137
|
end
|
|
138
138
|
end
|
|
139
139
|
end
|
data/spec/dump/reader_spec.rb
CHANGED
|
@@ -54,7 +54,7 @@ describe Reader do
|
|
|
54
54
|
qqq: 123
|
|
55
55
|
www: 345
|
|
56
56
|
TEXT
|
|
57
|
-
expect(
|
|
57
|
+
expect(@summary.to_s).to eq(output.gsub(/#{output[/^\s+/]}/, ' '))
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
it 'pluralizes' do
|
|
@@ -356,14 +356,14 @@ describe Reader do
|
|
|
356
356
|
|
|
357
357
|
describe 'read_tables' do
|
|
358
358
|
it 'verifies connection' do
|
|
359
|
-
allow(@dump).to receive(:config).and_return(
|
|
359
|
+
allow(@dump).to receive(:config).and_return(:tables => [])
|
|
360
360
|
expect(@dump).to receive(:verify_connection)
|
|
361
361
|
@dump.read_tables
|
|
362
362
|
end
|
|
363
363
|
|
|
364
364
|
it 'calls read_table for each table in config' do
|
|
365
365
|
allow(@dump).to receive(:verify_connection)
|
|
366
|
-
allow(@dump).to receive(:config).and_return(
|
|
366
|
+
allow(@dump).to receive(:config).and_return(:tables => {'first' => 1, 'second' => 3})
|
|
367
367
|
|
|
368
368
|
expect(@dump).to receive(:read_table).with('first', 1)
|
|
369
369
|
expect(@dump).to receive(:read_table).with('second', 3)
|
|
@@ -373,7 +373,7 @@ describe Reader do
|
|
|
373
373
|
|
|
374
374
|
describe 'when called with restore_tables' do
|
|
375
375
|
it 'verifies connection and calls read_table for each table in restore_tables' do
|
|
376
|
-
allow(@dump).to receive(:config).and_return(
|
|
376
|
+
allow(@dump).to receive(:config).and_return(:tables => {'first' => 1, 'second' => 3})
|
|
377
377
|
|
|
378
378
|
expect(@dump).to receive(:verify_connection)
|
|
379
379
|
expect(@dump).to receive(:read_table).with('first', 1)
|
|
@@ -385,7 +385,7 @@ describe Reader do
|
|
|
385
385
|
end
|
|
386
386
|
|
|
387
387
|
it 'does not verfiy connection or call read_table for empty restore_tables' do
|
|
388
|
-
allow(@dump).to receive(:config).and_return(
|
|
388
|
+
allow(@dump).to receive(:config).and_return(:tables => {'first' => 1, 'second' => 3})
|
|
389
389
|
|
|
390
390
|
expect(@dump).not_to receive(:verify_connection)
|
|
391
391
|
expect(@dump).not_to receive(:read_table)
|
|
@@ -473,7 +473,7 @@ describe Reader do
|
|
|
473
473
|
expect(@dump).to receive(:quote_table_name).with('first').and_return('`first`')
|
|
474
474
|
expect(@dump).to receive(:columns_insert_sql).with(@columns).and_return('(`id`, `name`)')
|
|
475
475
|
@rows.each do |row|
|
|
476
|
-
expect(@dump).to receive(:values_insert_sql).with(row
|
|
476
|
+
expect(@dump).to receive(:values_insert_sql).with(row, &:inspect)
|
|
477
477
|
end
|
|
478
478
|
|
|
479
479
|
expect(@dump).to receive(:insert_into_table).with('`first`', '(`id`, `name`)', @rows.map(&:inspect))
|
|
@@ -497,7 +497,7 @@ describe Reader do
|
|
|
497
497
|
end
|
|
498
498
|
|
|
499
499
|
it 'does not read assets if config[:assets] is blank' do
|
|
500
|
-
allow(@dump).to receive(:config).and_return(
|
|
500
|
+
allow(@dump).to receive(:config).and_return(:assets => [])
|
|
501
501
|
expect(@dump).not_to receive(:find_entry)
|
|
502
502
|
@dump.read_assets
|
|
503
503
|
end
|
|
@@ -509,7 +509,7 @@ describe Reader do
|
|
|
509
509
|
|
|
510
510
|
it 'calls assets:delete' do
|
|
511
511
|
@assets = %w[images videos]
|
|
512
|
-
allow(@dump).to receive(:config).and_return(
|
|
512
|
+
allow(@dump).to receive(:config).and_return(:assets => @assets)
|
|
513
513
|
allow(@dump).to receive(:find_entry)
|
|
514
514
|
|
|
515
515
|
expect(@task).to receive(:invoke)
|
|
@@ -519,7 +519,7 @@ describe Reader do
|
|
|
519
519
|
|
|
520
520
|
it 'calls assets:delete with ASSETS set to config[:assets] joined with :' do
|
|
521
521
|
@assets = %w[images videos]
|
|
522
|
-
allow(@dump).to receive(:config).and_return(
|
|
522
|
+
allow(@dump).to receive(:config).and_return(:assets => @assets)
|
|
523
523
|
allow(@dump).to receive(:find_entry)
|
|
524
524
|
|
|
525
525
|
expect(@task).to receive(:invoke) do
|
|
@@ -532,7 +532,7 @@ describe Reader do
|
|
|
532
532
|
describe 'when called with restore_assets' do
|
|
533
533
|
it 'deletes files and dirs only in requested paths' do
|
|
534
534
|
@assets = %w[images videos]
|
|
535
|
-
allow(@dump).to receive(:config).and_return(
|
|
535
|
+
allow(@dump).to receive(:config).and_return(:assets => @assets)
|
|
536
536
|
|
|
537
537
|
expect(Dump::Assets).to receive('glob_asset_children').with('images', '**/*').and_return(%w[images images/a.jpg images/b.jpg])
|
|
538
538
|
expect(Dump::Assets).to receive('glob_asset_children').with('videos', '**/*').and_return(%w[videos videos/a.mov])
|
|
@@ -557,7 +557,7 @@ describe Reader do
|
|
|
557
557
|
|
|
558
558
|
it 'does not delete any files and dirs for empty list' do
|
|
559
559
|
@assets = %w[images videos]
|
|
560
|
-
allow(@dump).to receive(:config).and_return(
|
|
560
|
+
allow(@dump).to receive(:config).and_return(:assets => @assets)
|
|
561
561
|
|
|
562
562
|
expect(Dump::Assets).not_to receive('glob_asset_children')
|
|
563
563
|
|
|
@@ -577,7 +577,7 @@ describe Reader do
|
|
|
577
577
|
describe 'old style' do
|
|
578
578
|
it 'finds assets.tar' do
|
|
579
579
|
@assets = %w[images videos]
|
|
580
|
-
allow(@dump).to receive(:config).and_return(
|
|
580
|
+
allow(@dump).to receive(:config).and_return(:assets => @assets)
|
|
581
581
|
allow(Dir).to receive(:glob).and_return([])
|
|
582
582
|
allow(FileUtils).to receive(:remove_entry)
|
|
583
583
|
allow(@stream).to receive(:each)
|
|
@@ -592,7 +592,7 @@ describe Reader do
|
|
|
592
592
|
{'images' => {:files => 0, :total => 0}, 'videos' => {:files => 0, :total => 0}},
|
|
593
593
|
].each do |assets|
|
|
594
594
|
it 'rewrites rewind method to empty method - to not raise exception, opens tar and extracts each entry' do
|
|
595
|
-
allow(@dump).to receive(:config).and_return(
|
|
595
|
+
allow(@dump).to receive(:config).and_return(:assets => assets)
|
|
596
596
|
allow(Dir).to receive(:glob).and_return([])
|
|
597
597
|
allow(FileUtils).to receive(:remove_entry)
|
|
598
598
|
|
|
@@ -626,7 +626,7 @@ describe Reader do
|
|
|
626
626
|
{'images' => {:files => 0, :total => 0}, 'videos' => {:files => 0, :total => 0}},
|
|
627
627
|
].each do |assets|
|
|
628
628
|
it 'extracts each entry' do
|
|
629
|
-
allow(@dump).to receive(:config).and_return(
|
|
629
|
+
allow(@dump).to receive(:config).and_return(:assets => assets)
|
|
630
630
|
allow(Dir).to receive(:glob).and_return([])
|
|
631
631
|
allow(FileUtils).to receive(:remove_entry)
|
|
632
632
|
|
data/spec/dump/snapshot_spec.rb
CHANGED
|
@@ -120,8 +120,8 @@ describe Dump::Snapshot do
|
|
|
120
120
|
|
|
121
121
|
describe 'with tags' do
|
|
122
122
|
before do
|
|
123
|
-
# 0 1
|
|
124
|
-
dumps_tags = [''] + %w[a
|
|
123
|
+
# 0 1 2 3 4 5 6 7 8 9 10 11 12 131415 16
|
|
124
|
+
dumps_tags = [''] + %w[a a,d a,d,o a,d,s a,d,s,o a,o a,s a,s,o d d,o d,s d,s,o o s s,o z]
|
|
125
125
|
paths = dumps_tags.each_with_index.map do |dump_tags, i|
|
|
126
126
|
path = dump_path("196504140659#{10 + i}@#{dump_tags}.tgz")
|
|
127
127
|
expect(File).to receive(:file?).with(path).at_least(1).and_return(true)
|
|
@@ -135,15 +135,22 @@ describe Dump::Snapshot do
|
|
|
135
135
|
end
|
|
136
136
|
|
|
137
137
|
{
|
|
138
|
-
'x'
|
|
139
|
-
|
|
140
|
-
'
|
|
141
|
-
|
|
138
|
+
'x' => [],
|
|
139
|
+
|
|
140
|
+
'+x' => [],
|
|
141
|
+
|
|
142
|
+
'z' => [16],
|
|
143
|
+
|
|
144
|
+
'a,d,s,o' => [1..15],
|
|
145
|
+
|
|
142
146
|
'+a,+d,+s,+o' => [5],
|
|
143
|
-
|
|
147
|
+
|
|
148
|
+
'-o' => [0, 1, 2, 4, 7, 9, 11, 14, 16],
|
|
149
|
+
|
|
144
150
|
'a,b,c,+s,-o' => [4, 7],
|
|
145
|
-
|
|
146
|
-
'+d
|
|
151
|
+
|
|
152
|
+
'+a,+d' => [2, 3, 4, 5],
|
|
153
|
+
'+d,+a' => [2, 3, 4, 5],
|
|
147
154
|
}.each do |tags, ids|
|
|
148
155
|
it "returns dumps filtered by #{tags}" do
|
|
149
156
|
expect(described_class.list(:tags => tags)).to eq(described_class.list.values_at(*ids))
|
|
@@ -255,18 +262,18 @@ describe Dump::Snapshot do
|
|
|
255
262
|
|
|
256
263
|
describe 'get_filter_tags' do
|
|
257
264
|
it 'splits string and returns uniq non blank sorted tags' do
|
|
258
|
-
expect(described_class.new('').send(:get_filter_tags, 'a,+b,+c,-d')).to eq(
|
|
259
|
-
expect(described_class.new('').send(:get_filter_tags, ' a , + b , + c , - d ')).to eq(
|
|
260
|
-
expect(described_class.new('').send(:get_filter_tags, ' a , + c , + b , - d ')).to eq(
|
|
261
|
-
expect(described_class.new('').send(:get_filter_tags, ' a , + b , + , - ')).to eq(
|
|
262
|
-
expect(described_class.new('').send(:get_filter_tags, ' a , a , + b , + b , - d , - d ')).to eq(
|
|
265
|
+
expect(described_class.new('').send(:get_filter_tags, 'a,+b,+c,-d')).to eq(:simple => %w[a], :mandatory => %w[b c], :forbidden => %w[d])
|
|
266
|
+
expect(described_class.new('').send(:get_filter_tags, ' a , + b , + c , - d ')).to eq(:simple => %w[a], :mandatory => %w[b c], :forbidden => %w[d])
|
|
267
|
+
expect(described_class.new('').send(:get_filter_tags, ' a , + c , + b , - d ')).to eq(:simple => %w[a], :mandatory => %w[b c], :forbidden => %w[d])
|
|
268
|
+
expect(described_class.new('').send(:get_filter_tags, ' a , + b , + , - ')).to eq(:simple => %w[a], :mandatory => %w[b], :forbidden => [])
|
|
269
|
+
expect(described_class.new('').send(:get_filter_tags, ' a , a , + b , + b , - d , - d ')).to eq(:simple => %w[a], :mandatory => %w[b], :forbidden => %w[d])
|
|
263
270
|
expect{ described_class.new('').send(:get_filter_tags, 'a,+a') }.not_to raise_error
|
|
264
|
-
expect{ described_class.new('').send(:get_filter_tags, 'a,-a') }.to raise_error
|
|
265
|
-
expect{ described_class.new('').send(:get_filter_tags, '+a,-a') }.to raise_error
|
|
271
|
+
expect{ described_class.new('').send(:get_filter_tags, 'a,-a') }.to raise_error ArgumentError, /clashes/
|
|
272
|
+
expect{ described_class.new('').send(:get_filter_tags, '+a,-a') }.to raise_error ArgumentError, /clashes/
|
|
266
273
|
end
|
|
267
274
|
|
|
268
275
|
it 'accepts non string' do
|
|
269
|
-
expect(described_class.new('').send(:get_filter_tags, nil)).to eq(
|
|
276
|
+
expect(described_class.new('').send(:get_filter_tags, nil)).to eq(:simple => [], :mandatory => [], :forbidden => [])
|
|
270
277
|
end
|
|
271
278
|
end
|
|
272
279
|
|
|
@@ -141,7 +141,8 @@ describe Dump::TableManipulation do
|
|
|
141
141
|
expect(self).to receive(:table_columns).with('first').and_return(
|
|
142
142
|
[double(:column, :type => :integer, :limit => nil)] * 3 +
|
|
143
143
|
[double(:column, :type => :string, :limit => nil)] * 3 +
|
|
144
|
-
[double(:column, :type => :text, :limit => nil)]
|
|
144
|
+
[double(:column, :type => :text, :limit => nil)]
|
|
145
|
+
)
|
|
145
146
|
expect(table_chunk_size('first')).to satisfy{ |n|
|
|
146
147
|
(described_class::CHUNK_SIZE_MIN..described_class::CHUNK_SIZE_MAX).include?(n)
|
|
147
148
|
}
|
|
@@ -149,13 +150,15 @@ describe Dump::TableManipulation do
|
|
|
149
150
|
|
|
150
151
|
it 'does not return value less than CHUNK_SIZE_MIN' do
|
|
151
152
|
expect(self).to receive(:table_columns).with('first').and_return(
|
|
152
|
-
[double(:column, :type => :text, :limit => nil)] * 100
|
|
153
|
+
[double(:column, :type => :text, :limit => nil)] * 100
|
|
154
|
+
)
|
|
153
155
|
expect(table_chunk_size('first')).to eq(described_class::CHUNK_SIZE_MIN)
|
|
154
156
|
end
|
|
155
157
|
|
|
156
158
|
it 'does not return value more than CHUNK_SIZE_MAX' do
|
|
157
159
|
expect(self).to receive(:table_columns).with('first').and_return(
|
|
158
|
-
[double(:column, :type => :boolean, :limit => 1)] * 10
|
|
160
|
+
[double(:column, :type => :boolean, :limit => 1)] * 10
|
|
161
|
+
)
|
|
159
162
|
expect(table_chunk_size('first')).to eq(described_class::CHUNK_SIZE_MAX)
|
|
160
163
|
end
|
|
161
164
|
end
|
|
@@ -193,13 +196,13 @@ describe Dump::TableManipulation do
|
|
|
193
196
|
describe 'each_table_row' do
|
|
194
197
|
before do
|
|
195
198
|
@row_count = 550
|
|
196
|
-
@rows = Array.new(@row_count){ |i| {'id' =>
|
|
199
|
+
@rows = Array.new(@row_count){ |i| {'id' => i.succ.to_s} }
|
|
197
200
|
end
|
|
198
201
|
|
|
199
202
|
def verify_getting_rows
|
|
200
203
|
i = 0
|
|
201
204
|
each_table_row('first', @row_count) do |row|
|
|
202
|
-
expect(row).to eq(
|
|
205
|
+
expect(row).to eq('id' => i.succ.to_s)
|
|
203
206
|
i += 1
|
|
204
207
|
end
|
|
205
208
|
expect(i).to eq(@row_count)
|
data/spec/dump/writer_spec.rb
CHANGED
|
@@ -71,7 +71,7 @@ describe Writer do
|
|
|
71
71
|
@file = double('file')
|
|
72
72
|
expect(@file).to receive(:write).with('qwfpgj')
|
|
73
73
|
|
|
74
|
-
expect(@stream.tar).to receive(:add_file_simple).with('abc/def.txt', :mode =>
|
|
74
|
+
expect(@stream.tar).to receive(:add_file_simple).with('abc/def.txt', :mode => 0o100444, :size => 6).and_yield(@file)
|
|
75
75
|
|
|
76
76
|
@dump.create_file('abc/def.txt') do |file|
|
|
77
77
|
expect(file).to eq(@temp)
|
|
@@ -197,7 +197,7 @@ describe Writer do
|
|
|
197
197
|
|
|
198
198
|
@dump.write_assets
|
|
199
199
|
counts = {:files => 0, :total => 0}
|
|
200
|
-
expect(@config[:assets]).to eq(
|
|
200
|
+
expect(@config[:assets]).to eq('images/a' => counts, 'images/b' => counts, 'videos' => counts)
|
|
201
201
|
end
|
|
202
202
|
|
|
203
203
|
it 'uses glob to find files' do
|
|
@@ -283,7 +283,7 @@ describe Writer do
|
|
|
283
283
|
it 'dumps column names and values of each row' do
|
|
284
284
|
@file = double('file')
|
|
285
285
|
allow(@dump).to receive(:create_file).and_yield(@file)
|
|
286
|
-
@config.replace(
|
|
286
|
+
@config.replace(:tables => {'first' => 1, 'second' => 2}, :assets => %w[images videos])
|
|
287
287
|
|
|
288
288
|
expect(Marshal).to receive(:dump).with(@config, @file)
|
|
289
289
|
@dump.write_config
|
data/spec/dump_spec.rb
CHANGED
|
@@ -321,7 +321,7 @@ describe Dump do
|
|
|
321
321
|
it "raises if called with :leave which is not a number or 'none'" do
|
|
322
322
|
expect do
|
|
323
323
|
described_class.cleanup(:leave => 'nothing')
|
|
324
|
-
end.to raise_error
|
|
324
|
+
end.to raise_error ArgumentError, /number or "none"/
|
|
325
325
|
end
|
|
326
326
|
end
|
|
327
327
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dump
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ivan Kuchin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-11-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: archive-tar-minitar
|
|
@@ -28,61 +28,74 @@ dependencies:
|
|
|
28
28
|
name: progress
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - ~>
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '3.0'
|
|
34
|
-
- -
|
|
34
|
+
- - ">="
|
|
35
35
|
- !ruby/object:Gem::Version
|
|
36
36
|
version: 3.0.1
|
|
37
|
+
- - "!="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 3.2.0
|
|
40
|
+
- - "!="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 3.2.1
|
|
37
43
|
type: :runtime
|
|
38
44
|
prerelease: false
|
|
39
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
46
|
requirements:
|
|
41
|
-
- - ~>
|
|
47
|
+
- - "~>"
|
|
42
48
|
- !ruby/object:Gem::Version
|
|
43
49
|
version: '3.0'
|
|
44
|
-
- -
|
|
50
|
+
- - ">="
|
|
45
51
|
- !ruby/object:Gem::Version
|
|
46
52
|
version: 3.0.1
|
|
53
|
+
- - "!="
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: 3.2.0
|
|
56
|
+
- - "!="
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: 3.2.1
|
|
47
59
|
- !ruby/object:Gem::Dependency
|
|
48
60
|
name: rspec
|
|
49
61
|
requirement: !ruby/object:Gem::Requirement
|
|
50
62
|
requirements:
|
|
51
|
-
- - ~>
|
|
63
|
+
- - "~>"
|
|
52
64
|
- !ruby/object:Gem::Version
|
|
53
65
|
version: '3.0'
|
|
54
66
|
type: :development
|
|
55
67
|
prerelease: false
|
|
56
68
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
69
|
requirements:
|
|
58
|
-
- - ~>
|
|
70
|
+
- - "~>"
|
|
59
71
|
- !ruby/object:Gem::Version
|
|
60
72
|
version: '3.0'
|
|
61
73
|
- !ruby/object:Gem::Dependency
|
|
62
74
|
name: rubocop
|
|
63
75
|
requirement: !ruby/object:Gem::Requirement
|
|
64
76
|
requirements:
|
|
65
|
-
- - ~>
|
|
77
|
+
- - "~>"
|
|
66
78
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: '0.
|
|
79
|
+
version: '0.59'
|
|
68
80
|
type: :development
|
|
69
81
|
prerelease: false
|
|
70
82
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
83
|
requirements:
|
|
72
|
-
- - ~>
|
|
84
|
+
- - "~>"
|
|
73
85
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '0.
|
|
86
|
+
version: '0.59'
|
|
75
87
|
description:
|
|
76
88
|
email:
|
|
77
89
|
executables: []
|
|
78
90
|
extensions: []
|
|
79
91
|
extra_rdoc_files: []
|
|
80
92
|
files:
|
|
81
|
-
- .gitignore
|
|
82
|
-
- .rubocop.yml
|
|
83
|
-
- .rubocop_todo.yml
|
|
84
|
-
- .travis.database.yml
|
|
85
|
-
- .travis.yml
|
|
93
|
+
- ".gitignore"
|
|
94
|
+
- ".rubocop.yml"
|
|
95
|
+
- ".rubocop_todo.yml"
|
|
96
|
+
- ".travis.database.yml"
|
|
97
|
+
- ".travis.yml"
|
|
98
|
+
- Appraisals
|
|
86
99
|
- Gemfile
|
|
87
100
|
- LICENSE.txt
|
|
88
101
|
- README.markdown
|
|
@@ -244,6 +257,82 @@ files:
|
|
|
244
257
|
- spec/dummy-4.2/config/secrets.yml
|
|
245
258
|
- spec/dummy-4.2/db/seeds.rb
|
|
246
259
|
- spec/dummy-4.2/log/.keep
|
|
260
|
+
- spec/dummy-5.0/.gitignore
|
|
261
|
+
- spec/dummy-5.0/config.ru
|
|
262
|
+
- spec/dummy-5.0/config/application.rb
|
|
263
|
+
- spec/dummy-5.0/config/boot.rb
|
|
264
|
+
- spec/dummy-5.0/config/cable.yml
|
|
265
|
+
- spec/dummy-5.0/config/database.yml
|
|
266
|
+
- spec/dummy-5.0/config/environment.rb
|
|
267
|
+
- spec/dummy-5.0/config/environments/development.rb
|
|
268
|
+
- spec/dummy-5.0/config/environments/production.rb
|
|
269
|
+
- spec/dummy-5.0/config/environments/test.rb
|
|
270
|
+
- spec/dummy-5.0/config/initializers/application_controller_renderer.rb
|
|
271
|
+
- spec/dummy-5.0/config/initializers/backtrace_silencers.rb
|
|
272
|
+
- spec/dummy-5.0/config/initializers/cookies_serializer.rb
|
|
273
|
+
- spec/dummy-5.0/config/initializers/filter_parameter_logging.rb
|
|
274
|
+
- spec/dummy-5.0/config/initializers/inflections.rb
|
|
275
|
+
- spec/dummy-5.0/config/initializers/mime_types.rb
|
|
276
|
+
- spec/dummy-5.0/config/initializers/new_framework_defaults.rb
|
|
277
|
+
- spec/dummy-5.0/config/initializers/session_store.rb
|
|
278
|
+
- spec/dummy-5.0/config/initializers/wrap_parameters.rb
|
|
279
|
+
- spec/dummy-5.0/config/locales/en.yml
|
|
280
|
+
- spec/dummy-5.0/config/puma.rb
|
|
281
|
+
- spec/dummy-5.0/config/routes.rb
|
|
282
|
+
- spec/dummy-5.0/config/secrets.yml
|
|
283
|
+
- spec/dummy-5.0/config/spring.rb
|
|
284
|
+
- spec/dummy-5.0/db/seeds.rb
|
|
285
|
+
- spec/dummy-5.0/log/.keep
|
|
286
|
+
- spec/dummy-5.1/.gitignore
|
|
287
|
+
- spec/dummy-5.1/config.ru
|
|
288
|
+
- spec/dummy-5.1/config/application.rb
|
|
289
|
+
- spec/dummy-5.1/config/boot.rb
|
|
290
|
+
- spec/dummy-5.1/config/cable.yml
|
|
291
|
+
- spec/dummy-5.1/config/database.yml
|
|
292
|
+
- spec/dummy-5.1/config/environment.rb
|
|
293
|
+
- spec/dummy-5.1/config/environments/development.rb
|
|
294
|
+
- spec/dummy-5.1/config/environments/production.rb
|
|
295
|
+
- spec/dummy-5.1/config/environments/test.rb
|
|
296
|
+
- spec/dummy-5.1/config/initializers/application_controller_renderer.rb
|
|
297
|
+
- spec/dummy-5.1/config/initializers/backtrace_silencers.rb
|
|
298
|
+
- spec/dummy-5.1/config/initializers/cookies_serializer.rb
|
|
299
|
+
- spec/dummy-5.1/config/initializers/filter_parameter_logging.rb
|
|
300
|
+
- spec/dummy-5.1/config/initializers/inflections.rb
|
|
301
|
+
- spec/dummy-5.1/config/initializers/mime_types.rb
|
|
302
|
+
- spec/dummy-5.1/config/initializers/wrap_parameters.rb
|
|
303
|
+
- spec/dummy-5.1/config/locales/en.yml
|
|
304
|
+
- spec/dummy-5.1/config/puma.rb
|
|
305
|
+
- spec/dummy-5.1/config/routes.rb
|
|
306
|
+
- spec/dummy-5.1/config/secrets.yml
|
|
307
|
+
- spec/dummy-5.1/config/spring.rb
|
|
308
|
+
- spec/dummy-5.1/db/seeds.rb
|
|
309
|
+
- spec/dummy-5.1/log/.keep
|
|
310
|
+
- spec/dummy-5.1/package.json
|
|
311
|
+
- spec/dummy-5.2/.gitignore
|
|
312
|
+
- spec/dummy-5.2/config.ru
|
|
313
|
+
- spec/dummy-5.2/config/application.rb
|
|
314
|
+
- spec/dummy-5.2/config/boot.rb
|
|
315
|
+
- spec/dummy-5.2/config/cable.yml
|
|
316
|
+
- spec/dummy-5.2/config/database.yml
|
|
317
|
+
- spec/dummy-5.2/config/environment.rb
|
|
318
|
+
- spec/dummy-5.2/config/environments/development.rb
|
|
319
|
+
- spec/dummy-5.2/config/environments/production.rb
|
|
320
|
+
- spec/dummy-5.2/config/environments/test.rb
|
|
321
|
+
- spec/dummy-5.2/config/initializers/application_controller_renderer.rb
|
|
322
|
+
- spec/dummy-5.2/config/initializers/backtrace_silencers.rb
|
|
323
|
+
- spec/dummy-5.2/config/initializers/content_security_policy.rb
|
|
324
|
+
- spec/dummy-5.2/config/initializers/cookies_serializer.rb
|
|
325
|
+
- spec/dummy-5.2/config/initializers/filter_parameter_logging.rb
|
|
326
|
+
- spec/dummy-5.2/config/initializers/inflections.rb
|
|
327
|
+
- spec/dummy-5.2/config/initializers/mime_types.rb
|
|
328
|
+
- spec/dummy-5.2/config/initializers/wrap_parameters.rb
|
|
329
|
+
- spec/dummy-5.2/config/locales/en.yml
|
|
330
|
+
- spec/dummy-5.2/config/puma.rb
|
|
331
|
+
- spec/dummy-5.2/config/routes.rb
|
|
332
|
+
- spec/dummy-5.2/config/spring.rb
|
|
333
|
+
- spec/dummy-5.2/config/storage.yml
|
|
334
|
+
- spec/dummy-5.2/db/seeds.rb
|
|
335
|
+
- spec/dummy-5.2/package.json
|
|
247
336
|
- spec/dummy_rails_app.rb
|
|
248
337
|
- spec/dump/env/filter_spec.rb
|
|
249
338
|
- spec/dump/env_spec.rb
|
|
@@ -260,24 +349,27 @@ files:
|
|
|
260
349
|
homepage: http://github.com/toy/dump
|
|
261
350
|
licenses:
|
|
262
351
|
- MIT
|
|
263
|
-
metadata:
|
|
352
|
+
metadata:
|
|
353
|
+
bug_tracker_uri: https://github.com/toy/dump/issues
|
|
354
|
+
documentation_uri: https://www.rubydoc.info/gems/dump/1.2.0
|
|
355
|
+
source_code_uri: https://github.com/toy/dump
|
|
264
356
|
post_install_message:
|
|
265
357
|
rdoc_options: []
|
|
266
358
|
require_paths:
|
|
267
359
|
- lib
|
|
268
360
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
269
361
|
requirements:
|
|
270
|
-
- -
|
|
362
|
+
- - ">="
|
|
271
363
|
- !ruby/object:Gem::Version
|
|
272
364
|
version: '0'
|
|
273
365
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
274
366
|
requirements:
|
|
275
|
-
- -
|
|
367
|
+
- - ">="
|
|
276
368
|
- !ruby/object:Gem::Version
|
|
277
369
|
version: '0'
|
|
278
370
|
requirements: []
|
|
279
371
|
rubyforge_project: dump
|
|
280
|
-
rubygems_version: 2.
|
|
372
|
+
rubygems_version: 2.7.8
|
|
281
373
|
signing_key:
|
|
282
374
|
specification_version: 4
|
|
283
375
|
summary: Rails app rake and capistrano tasks to create and restore dumps of database
|
|
@@ -418,6 +510,82 @@ test_files:
|
|
|
418
510
|
- spec/dummy-4.2/config/secrets.yml
|
|
419
511
|
- spec/dummy-4.2/db/seeds.rb
|
|
420
512
|
- spec/dummy-4.2/log/.keep
|
|
513
|
+
- spec/dummy-5.0/.gitignore
|
|
514
|
+
- spec/dummy-5.0/config.ru
|
|
515
|
+
- spec/dummy-5.0/config/application.rb
|
|
516
|
+
- spec/dummy-5.0/config/boot.rb
|
|
517
|
+
- spec/dummy-5.0/config/cable.yml
|
|
518
|
+
- spec/dummy-5.0/config/database.yml
|
|
519
|
+
- spec/dummy-5.0/config/environment.rb
|
|
520
|
+
- spec/dummy-5.0/config/environments/development.rb
|
|
521
|
+
- spec/dummy-5.0/config/environments/production.rb
|
|
522
|
+
- spec/dummy-5.0/config/environments/test.rb
|
|
523
|
+
- spec/dummy-5.0/config/initializers/application_controller_renderer.rb
|
|
524
|
+
- spec/dummy-5.0/config/initializers/backtrace_silencers.rb
|
|
525
|
+
- spec/dummy-5.0/config/initializers/cookies_serializer.rb
|
|
526
|
+
- spec/dummy-5.0/config/initializers/filter_parameter_logging.rb
|
|
527
|
+
- spec/dummy-5.0/config/initializers/inflections.rb
|
|
528
|
+
- spec/dummy-5.0/config/initializers/mime_types.rb
|
|
529
|
+
- spec/dummy-5.0/config/initializers/new_framework_defaults.rb
|
|
530
|
+
- spec/dummy-5.0/config/initializers/session_store.rb
|
|
531
|
+
- spec/dummy-5.0/config/initializers/wrap_parameters.rb
|
|
532
|
+
- spec/dummy-5.0/config/locales/en.yml
|
|
533
|
+
- spec/dummy-5.0/config/puma.rb
|
|
534
|
+
- spec/dummy-5.0/config/routes.rb
|
|
535
|
+
- spec/dummy-5.0/config/secrets.yml
|
|
536
|
+
- spec/dummy-5.0/config/spring.rb
|
|
537
|
+
- spec/dummy-5.0/db/seeds.rb
|
|
538
|
+
- spec/dummy-5.0/log/.keep
|
|
539
|
+
- spec/dummy-5.1/.gitignore
|
|
540
|
+
- spec/dummy-5.1/config.ru
|
|
541
|
+
- spec/dummy-5.1/config/application.rb
|
|
542
|
+
- spec/dummy-5.1/config/boot.rb
|
|
543
|
+
- spec/dummy-5.1/config/cable.yml
|
|
544
|
+
- spec/dummy-5.1/config/database.yml
|
|
545
|
+
- spec/dummy-5.1/config/environment.rb
|
|
546
|
+
- spec/dummy-5.1/config/environments/development.rb
|
|
547
|
+
- spec/dummy-5.1/config/environments/production.rb
|
|
548
|
+
- spec/dummy-5.1/config/environments/test.rb
|
|
549
|
+
- spec/dummy-5.1/config/initializers/application_controller_renderer.rb
|
|
550
|
+
- spec/dummy-5.1/config/initializers/backtrace_silencers.rb
|
|
551
|
+
- spec/dummy-5.1/config/initializers/cookies_serializer.rb
|
|
552
|
+
- spec/dummy-5.1/config/initializers/filter_parameter_logging.rb
|
|
553
|
+
- spec/dummy-5.1/config/initializers/inflections.rb
|
|
554
|
+
- spec/dummy-5.1/config/initializers/mime_types.rb
|
|
555
|
+
- spec/dummy-5.1/config/initializers/wrap_parameters.rb
|
|
556
|
+
- spec/dummy-5.1/config/locales/en.yml
|
|
557
|
+
- spec/dummy-5.1/config/puma.rb
|
|
558
|
+
- spec/dummy-5.1/config/routes.rb
|
|
559
|
+
- spec/dummy-5.1/config/secrets.yml
|
|
560
|
+
- spec/dummy-5.1/config/spring.rb
|
|
561
|
+
- spec/dummy-5.1/db/seeds.rb
|
|
562
|
+
- spec/dummy-5.1/log/.keep
|
|
563
|
+
- spec/dummy-5.1/package.json
|
|
564
|
+
- spec/dummy-5.2/.gitignore
|
|
565
|
+
- spec/dummy-5.2/config.ru
|
|
566
|
+
- spec/dummy-5.2/config/application.rb
|
|
567
|
+
- spec/dummy-5.2/config/boot.rb
|
|
568
|
+
- spec/dummy-5.2/config/cable.yml
|
|
569
|
+
- spec/dummy-5.2/config/database.yml
|
|
570
|
+
- spec/dummy-5.2/config/environment.rb
|
|
571
|
+
- spec/dummy-5.2/config/environments/development.rb
|
|
572
|
+
- spec/dummy-5.2/config/environments/production.rb
|
|
573
|
+
- spec/dummy-5.2/config/environments/test.rb
|
|
574
|
+
- spec/dummy-5.2/config/initializers/application_controller_renderer.rb
|
|
575
|
+
- spec/dummy-5.2/config/initializers/backtrace_silencers.rb
|
|
576
|
+
- spec/dummy-5.2/config/initializers/content_security_policy.rb
|
|
577
|
+
- spec/dummy-5.2/config/initializers/cookies_serializer.rb
|
|
578
|
+
- spec/dummy-5.2/config/initializers/filter_parameter_logging.rb
|
|
579
|
+
- spec/dummy-5.2/config/initializers/inflections.rb
|
|
580
|
+
- spec/dummy-5.2/config/initializers/mime_types.rb
|
|
581
|
+
- spec/dummy-5.2/config/initializers/wrap_parameters.rb
|
|
582
|
+
- spec/dummy-5.2/config/locales/en.yml
|
|
583
|
+
- spec/dummy-5.2/config/puma.rb
|
|
584
|
+
- spec/dummy-5.2/config/routes.rb
|
|
585
|
+
- spec/dummy-5.2/config/spring.rb
|
|
586
|
+
- spec/dummy-5.2/config/storage.yml
|
|
587
|
+
- spec/dummy-5.2/db/seeds.rb
|
|
588
|
+
- spec/dummy-5.2/package.json
|
|
421
589
|
- spec/dummy_rails_app.rb
|
|
422
590
|
- spec/dump/env/filter_spec.rb
|
|
423
591
|
- spec/dump/env_spec.rb
|