dumpdb 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +24 -48
- data/lib/dumpdb/db.rb +34 -19
- data/lib/dumpdb/settings.rb +4 -19
- data/lib/dumpdb/version.rb +1 -1
- data/lib/dumpdb.rb +0 -10
- data/test/helper.rb +2 -0
- data/test/support/factory.rb +6 -0
- data/test/support/test_scripts.rb +29 -6
- data/test/unit/db_tests.rb +68 -17
- data/test/unit/script_tests.rb +4 -29
- data/test/unit/settings_tests.rb +0 -35
- metadata +8 -10
- data/test/support/database.yaml +0 -12
- data/test/support/test.yaml +0 -6
data/{LICENSE.txt → LICENSE}
RENAMED
File without changes
|
data/README.md
CHANGED
@@ -10,10 +10,23 @@ require 'dumpdb'
|
|
10
10
|
class MysqlFullRestore
|
11
11
|
include Dumpdb
|
12
12
|
|
13
|
-
databases { '/path/to/database.yml'}
|
14
13
|
dump_file { "dump.bz2" }
|
15
|
-
source
|
16
|
-
|
14
|
+
source do
|
15
|
+
{ :host => 'production.example.com',
|
16
|
+
:port => 1234,
|
17
|
+
:user => 'admin',
|
18
|
+
:pw => 'secret',
|
19
|
+
:db => 'myapp_db',
|
20
|
+
:output_root => '/some/source/dir'
|
21
|
+
}
|
22
|
+
end
|
23
|
+
target do
|
24
|
+
{ :host => 'localhost',
|
25
|
+
:user => 'admin',
|
26
|
+
:db => 'myapp_db',
|
27
|
+
:output_root => '/some/target/dir'
|
28
|
+
}
|
29
|
+
end
|
17
30
|
|
18
31
|
dump { "mysqldump -u :user -p\":pw\" :db | bzip2 > :dump_file" }
|
19
32
|
restore { "mysqladmin -u :user -p\":pw\" -f -b DROP :db; true" }
|
@@ -152,17 +165,17 @@ class MysqlFullRestore
|
|
152
165
|
include Dumpdb
|
153
166
|
|
154
167
|
source do
|
155
|
-
{
|
156
|
-
|
157
|
-
|
158
|
-
|
168
|
+
{ :user => 'something',
|
169
|
+
:pw => 'secret',
|
170
|
+
:db => 'something_production',
|
171
|
+
:something => 'else'
|
159
172
|
}
|
160
173
|
end
|
161
174
|
|
162
175
|
target do
|
163
|
-
{
|
164
|
-
|
165
|
-
|
176
|
+
{ :user => 'root',
|
177
|
+
:pw => 'supersecret',
|
178
|
+
:db => 'something_development'
|
166
179
|
}
|
167
180
|
end
|
168
181
|
|
@@ -172,43 +185,6 @@ end
|
|
172
185
|
|
173
186
|
Any settings keys can be used as command placeholders in dump and restore commands.
|
174
187
|
|
175
|
-
**Note:** When reading source and target settings, Dumpdb takes common keys like 'hostname', 'username', 'password', and 'database' and exposes them with the more succinct 'host', 'user', 'pw', and 'db'.
|
176
|
-
|
177
|
-
### Lookup settings from YAML
|
178
|
-
|
179
|
-
Since many ORMs allow you to configure db connections using yaml files, Dumpdb supports specifying your databases from a yaml file.
|
180
|
-
|
181
|
-
```ruby
|
182
|
-
class MysqlFullRestore
|
183
|
-
include Dumpdb
|
184
|
-
|
185
|
-
databases { '/path/to/database.yml' }
|
186
|
-
|
187
|
-
# ...
|
188
|
-
end
|
189
|
-
```
|
190
|
-
|
191
|
-
Now you can lookup your source and target settings using the `db` method.
|
192
|
-
|
193
|
-
```ruby
|
194
|
-
databases { '/path/to/database.yml' }
|
195
|
-
source { db('production') }
|
196
|
-
target { db('development') }
|
197
|
-
```
|
198
|
-
|
199
|
-
You can merge in additional settings by passing them to the `db` command:
|
200
|
-
|
201
|
-
```ruby
|
202
|
-
class MysqlFullRestore
|
203
|
-
include Dumpdb
|
204
|
-
|
205
|
-
databases { '/path/to/database.yml' }
|
206
|
-
source { db('produciton', :something => 'else') }
|
207
|
-
|
208
|
-
# ...
|
209
|
-
end
|
210
|
-
```
|
211
|
-
|
212
188
|
### Building Commands
|
213
189
|
|
214
190
|
As you may have noticed, the script DSL settings methods all take a proc as their argument. This is because the procs are lazy-eval'd in the scope of the script instance. This allows you to use interpolation to help build commands with dynamic data.
|
@@ -231,7 +207,7 @@ class MysqlIgnoredTablesRestore
|
|
231
207
|
end
|
232
208
|
|
233
209
|
def ignored_tables
|
234
|
-
@opts[:ignored_tables].
|
210
|
+
@opts[:ignored_tables].map{ |t| "--ignore-table=#{source.db}.#{t}" }.join(' ')
|
235
211
|
end
|
236
212
|
end
|
237
213
|
```
|
data/lib/dumpdb/db.rb
CHANGED
@@ -2,42 +2,57 @@ module Dumpdb
|
|
2
2
|
|
3
3
|
class Db
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
5
|
+
DEFAULT_VALUE = ''.freeze
|
6
|
+
|
7
|
+
def initialize(dump_file_name = nil, values = nil)
|
8
|
+
dump_file_name = dump_file_name || 'dump.output'
|
9
|
+
@values = dumpdb_symbolize_keys(values)
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
@values['db'] ||= (@values['database'] || '')
|
16
|
-
@values['output_root'] ||= ''
|
11
|
+
[:host, :port, :user, :pw, :db, :output_root].each do |key|
|
12
|
+
@values[key] ||= DEFAULT_VALUE
|
13
|
+
end
|
17
14
|
|
18
|
-
@values[
|
19
|
-
|
15
|
+
@values[:output_dir] = dumpdb_build_output_dir(
|
16
|
+
self.output_root,
|
17
|
+
self.host,
|
18
|
+
self.db
|
19
|
+
)
|
20
|
+
@values[:dump_file] = File.join(self.output_dir, dump_file_name)
|
20
21
|
end
|
21
22
|
|
22
23
|
def to_hash; @values; end
|
23
24
|
|
24
25
|
def method_missing(meth, *args, &block)
|
25
|
-
if @values.has_key?(meth.
|
26
|
-
@values[meth.
|
26
|
+
if @values.has_key?(meth.to_sym)
|
27
|
+
@values[meth.to_sym]
|
27
28
|
else
|
28
29
|
super
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
32
33
|
def respond_to?(meth)
|
33
|
-
@values.has_key?(meth.
|
34
|
+
@values.has_key?(meth.to_sym) || super
|
34
35
|
end
|
35
36
|
|
36
37
|
private
|
37
38
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
39
|
+
def dumpdb_build_output_dir(output_root, host, database)
|
40
|
+
dir_name = dumpdb_build_output_dir_name(host, database)
|
41
|
+
if output_root && !output_root.to_s.empty?
|
42
|
+
File.join(output_root, dir_name)
|
43
|
+
else
|
44
|
+
dir_name
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def dumpdb_build_output_dir_name(host, database)
|
49
|
+
[host, database, Time.now.to_f].map(&:to_s).reject(&:empty?).join("__")
|
50
|
+
end
|
51
|
+
|
52
|
+
def dumpdb_symbolize_keys(values)
|
53
|
+
(values || {}).inject({}) do |h, (k, v)|
|
54
|
+
h.merge(k.to_sym => v)
|
55
|
+
end
|
41
56
|
end
|
42
57
|
|
43
58
|
end
|
data/lib/dumpdb/settings.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'yaml'
|
2
1
|
require 'dumpdb/db'
|
3
2
|
|
4
3
|
module Dumpdb::Settings
|
@@ -19,27 +18,13 @@ module Dumpdb::Settings
|
|
19
18
|
|
20
19
|
class Ssh < Base; end
|
21
20
|
|
22
|
-
class Databases < Base
|
23
|
-
|
24
|
-
def value(script)
|
25
|
-
val = super
|
26
|
-
val.kind_of?(::String) ? load_yaml(val) : val
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def load_yaml(file_path)
|
32
|
-
YAML.load(File.read(File.expand_path(file_path)))
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
21
|
class DumpFile < Base; end
|
37
22
|
|
38
23
|
class SourceTarget < Base
|
39
24
|
|
40
25
|
def value(script)
|
41
|
-
|
42
|
-
|
26
|
+
hash = super
|
27
|
+
Dumpdb::Db.new(script.dump_file, hash)
|
43
28
|
end
|
44
29
|
|
45
30
|
end
|
@@ -53,7 +38,7 @@ module Dumpdb::Settings
|
|
53
38
|
private
|
54
39
|
|
55
40
|
def hsub(string, hash)
|
56
|
-
hash.inject(string)
|
41
|
+
hash.inject(string){ |new_str, (k, v)| new_str.gsub(":#{k}", v.to_s) }
|
57
42
|
end
|
58
43
|
|
59
44
|
end
|
@@ -94,7 +79,7 @@ module Dumpdb::Settings
|
|
94
79
|
class CmdList < ::Array
|
95
80
|
|
96
81
|
def value(script, placeholder_vals={})
|
97
|
-
self.map{|cmd| cmd.value(script, placeholder_vals)}
|
82
|
+
self.map{ |cmd| cmd.value(script, placeholder_vals) }
|
98
83
|
end
|
99
84
|
|
100
85
|
end
|
data/lib/dumpdb/version.rb
CHANGED
data/lib/dumpdb.rb
CHANGED
@@ -13,7 +13,6 @@ module Dumpdb
|
|
13
13
|
include NsOptions
|
14
14
|
options :settings do
|
15
15
|
option 'ssh', Settings::Ssh, :default => ''
|
16
|
-
option 'databases', Settings::Databases, :default => {}
|
17
16
|
option 'dump_file', Settings::DumpFile, :default => ''
|
18
17
|
option 'source', Settings::SourceTarget, :default => {}
|
19
18
|
option 'target', Settings::SourceTarget, :default => {}
|
@@ -34,7 +33,6 @@ module Dumpdb
|
|
34
33
|
module SettingsDslMethods
|
35
34
|
|
36
35
|
def ssh(&block); settings.ssh = Settings::Ssh.new(block); end
|
37
|
-
def databases(&block); settings.databases = Settings::Databases.new(block); end
|
38
36
|
def dump_file(&block); settings.dump_file = Settings::DumpFile.new(block); end
|
39
37
|
def source(&block); settings.source = Settings::SourceTarget.new(block); end
|
40
38
|
def target(&block); settings.target = Settings::SourceTarget.new(block); end
|
@@ -49,7 +47,6 @@ module Dumpdb
|
|
49
47
|
def settings; self.class.settings; end
|
50
48
|
|
51
49
|
def ssh; @ssh ||= settings.ssh.value(self); end
|
52
|
-
def databases; @databases ||= settings.databases.value(self); end
|
53
50
|
def dump_file; @dump_file ||= settings.dump_file.value(self); end
|
54
51
|
def source; @source ||= settings.source.value(self); end
|
55
52
|
def target; @target ||= settings.target.value(self); end
|
@@ -60,13 +57,6 @@ module Dumpdb
|
|
60
57
|
|
61
58
|
end
|
62
59
|
|
63
|
-
def db(database_name, other_vals=nil)
|
64
|
-
if (db_vals = self.databases[database_name]).nil?
|
65
|
-
raise BadDatabaseName, "no database named `#{database_name}'."
|
66
|
-
end
|
67
|
-
Db.new(self.dump_file, db_vals.merge(other_vals || {}))
|
68
|
-
end
|
69
|
-
|
70
60
|
def dump_cmd(&block); Settings::DumpCmd.new(block).value(self); end
|
71
61
|
def restore_cmd(&block) Settings::RestoreCmd.new(block).value(self); end
|
72
62
|
|
data/test/helper.rb
CHANGED
@@ -3,10 +3,22 @@ require 'dumpdb'
|
|
3
3
|
class LocalScript
|
4
4
|
include Dumpdb
|
5
5
|
|
6
|
-
databases { File.join(ROOT_PATH, 'test/support/database.yaml') }
|
7
6
|
dump_file { "dump.#{type}" }
|
8
|
-
source
|
9
|
-
|
7
|
+
source do
|
8
|
+
{ :host => 'devhost',
|
9
|
+
:user => 'devuser',
|
10
|
+
:pw => 'devpw',
|
11
|
+
:db => 'devdb',
|
12
|
+
:another => 'value'
|
13
|
+
}
|
14
|
+
end
|
15
|
+
target do
|
16
|
+
{ :host => 'testhost',
|
17
|
+
:user => 'testuser',
|
18
|
+
:pw => 'testpw',
|
19
|
+
:db => 'testdb'
|
20
|
+
}
|
21
|
+
end
|
10
22
|
|
11
23
|
def type; "local"; end
|
12
24
|
end
|
@@ -15,10 +27,21 @@ class RemoteScript
|
|
15
27
|
include Dumpdb
|
16
28
|
|
17
29
|
ssh { 'user@example.com' }
|
18
|
-
databases { File.join(ROOT_PATH, 'test/support/database.yaml') }
|
19
30
|
dump_file { "dump.#{type}" }
|
20
|
-
source
|
21
|
-
|
31
|
+
source do
|
32
|
+
{ :host => 'devhost',
|
33
|
+
:user => 'devuser',
|
34
|
+
:pw => 'devpw',
|
35
|
+
:db => 'devdb',
|
36
|
+
}
|
37
|
+
end
|
38
|
+
target do
|
39
|
+
{ :host => 'testhost',
|
40
|
+
:user => 'testuser',
|
41
|
+
:pw => 'testpw',
|
42
|
+
:db => 'testdb'
|
43
|
+
}
|
44
|
+
end
|
22
45
|
|
23
46
|
def type; "remote"; end
|
24
47
|
end
|
data/test/unit/db_tests.rb
CHANGED
@@ -1,33 +1,84 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'dumpdb/db'
|
3
3
|
|
4
|
-
|
4
|
+
class Dumpdb::Db
|
5
5
|
|
6
|
-
class
|
7
|
-
desc "
|
6
|
+
class UnitTests < Assert::Context
|
7
|
+
desc "Dumpdb::Db"
|
8
8
|
setup do
|
9
|
-
@
|
9
|
+
@db_class = Dumpdb::Db
|
10
|
+
end
|
11
|
+
subject{ @db_class }
|
12
|
+
|
13
|
+
should "know its default value" do
|
14
|
+
assert_equal '', DEFAULT_VALUE
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
class InitTests < UnitTests
|
20
|
+
desc "when init"
|
21
|
+
setup do
|
22
|
+
@dump_file_name = Factory.file_name
|
23
|
+
@host = Factory.string
|
24
|
+
@port = Factory.integer
|
25
|
+
@user = Factory.string
|
26
|
+
@pw = Factory.string
|
27
|
+
@db_name = Factory.string
|
28
|
+
@output_root = Factory.dir_path
|
29
|
+
@custom_value = Factory.string
|
30
|
+
|
31
|
+
@current_time = Factory.time
|
32
|
+
Assert.stub(Time, :now){ @current_time }
|
33
|
+
|
34
|
+
@db = @db_class.new(@dump_file_name, {
|
35
|
+
:host => @host,
|
36
|
+
:port => @port,
|
37
|
+
:user => @user,
|
38
|
+
:pw => @pw,
|
39
|
+
:db => @db_name,
|
40
|
+
:output_root => @output_root,
|
41
|
+
:custom_value => @custom_value
|
42
|
+
})
|
10
43
|
end
|
11
44
|
subject { @db }
|
12
45
|
|
13
|
-
should have_imeths :host, :user, :pw, :db
|
46
|
+
should have_imeths :host, :port, :user, :pw, :db
|
47
|
+
should have_imeths :output_root, :output_dir, :dump_file
|
48
|
+
should have_imeths :to_hash
|
14
49
|
|
15
|
-
should "
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
50
|
+
should "know its attributes" do
|
51
|
+
assert_equal @host, subject.host
|
52
|
+
assert_equal @port, subject.port
|
53
|
+
assert_equal @user, subject.user
|
54
|
+
assert_equal @pw, subject.pw
|
55
|
+
assert_equal @db_name, subject.db
|
56
|
+
assert_equal @output_root, subject.output_root
|
57
|
+
exp = File.join(@output_root, "#{@host}__#{@db_name}__#{@current_time.to_f}")
|
58
|
+
assert_equal exp, subject.output_dir
|
59
|
+
exp = File.join(subject.output_dir, @dump_file_name)
|
60
|
+
assert_equal exp, subject.dump_file
|
21
61
|
end
|
22
62
|
|
23
|
-
should "
|
24
|
-
|
63
|
+
should "allow custom attributes" do
|
64
|
+
assert_true subject.respond_to?(:custom_value)
|
65
|
+
assert_equal @custom_value, subject.custom_value
|
66
|
+
end
|
67
|
+
|
68
|
+
should "default its attributes" do
|
69
|
+
db = @db_class.new
|
25
70
|
|
26
|
-
assert_equal
|
27
|
-
assert_equal
|
28
|
-
|
29
|
-
|
71
|
+
assert_equal DEFAULT_VALUE, db.host
|
72
|
+
assert_equal DEFAULT_VALUE, db.port
|
73
|
+
assert_equal DEFAULT_VALUE, db.user
|
74
|
+
assert_equal DEFAULT_VALUE, db.pw
|
75
|
+
assert_equal DEFAULT_VALUE, db.db
|
76
|
+
assert_equal DEFAULT_VALUE, db.output_root
|
77
|
+
assert_equal @current_time.to_f.to_s, db.output_dir
|
78
|
+
exp = File.join(db.output_dir, 'dump.output')
|
79
|
+
assert_equal exp, db.dump_file
|
30
80
|
end
|
81
|
+
|
31
82
|
end
|
32
83
|
|
33
84
|
end
|
data/test/unit/script_tests.rb
CHANGED
@@ -12,10 +12,11 @@ module Dumpdb
|
|
12
12
|
subject { @script }
|
13
13
|
|
14
14
|
should have_cmeths :settings
|
15
|
-
should have_imeths :settings, :
|
15
|
+
should have_imeths :settings, :dump_cmd, :restore_cmd
|
16
|
+
should have_imeths :ssh?, :ssh_opts, :run
|
16
17
|
|
17
|
-
should have_cmeths :ssh, :
|
18
|
-
should have_imeths :ssh, :
|
18
|
+
should have_cmeths :ssh, :dump_file, :source, :target
|
19
|
+
should have_imeths :ssh, :dump_file, :source, :target
|
19
20
|
|
20
21
|
should have_cmeths :dump, :restore
|
21
22
|
should have_imeths :dump_cmds, :restore_cmds, :copy_dump_cmd
|
@@ -32,7 +33,6 @@ module Dumpdb
|
|
32
33
|
|
33
34
|
should "store off the settings for the script" do
|
34
35
|
assert_kind_of Settings::Ssh, subject.settings.ssh
|
35
|
-
assert_kind_of Settings::Databases, subject.settings.databases
|
36
36
|
assert_kind_of Settings::DumpFile, subject.settings.dump_file
|
37
37
|
assert_kind_of Settings::SourceTarget, subject.settings.source
|
38
38
|
assert_kind_of Settings::SourceTarget, subject.settings.target
|
@@ -42,31 +42,6 @@ module Dumpdb
|
|
42
42
|
|
43
43
|
end
|
44
44
|
|
45
|
-
class DbMethTests < ScriptTests
|
46
|
-
desc "`db' method"
|
47
|
-
setup do
|
48
|
-
@script = LocalScript.new
|
49
|
-
end
|
50
|
-
|
51
|
-
should "build a Db based on the named database values" do
|
52
|
-
assert_kind_of Db, subject.target
|
53
|
-
assert_equal 'testhost', subject.target.host
|
54
|
-
end
|
55
|
-
|
56
|
-
should "build a Db based on the named database values plus additional values" do
|
57
|
-
assert_kind_of Db, subject.source
|
58
|
-
assert_equal 'devhost', subject.source.host
|
59
|
-
assert_equal 'value', subject.source.another
|
60
|
-
end
|
61
|
-
|
62
|
-
should "complain if looking up a db not in the `databases` collection" do
|
63
|
-
assert_raises BadDatabaseName do
|
64
|
-
subject.db('does_not_exist')
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
45
|
class CmdMethsTests < ScriptTests
|
71
46
|
|
72
47
|
should "build dump command strings" do
|
data/test/unit/settings_tests.rb
CHANGED
@@ -38,34 +38,6 @@ module Dumpdb
|
|
38
38
|
|
39
39
|
end
|
40
40
|
|
41
|
-
class DatabasesSettingTests < SettingsTests
|
42
|
-
desc "`databases` setting"
|
43
|
-
setup do
|
44
|
-
@from_hash = {
|
45
|
-
'db1' => {'db' => 'one'},
|
46
|
-
'db2' => {'db' => 'two'},
|
47
|
-
}
|
48
|
-
end
|
49
|
-
|
50
|
-
should "be available" do
|
51
|
-
assert Settings::Databases
|
52
|
-
end
|
53
|
-
|
54
|
-
should "come from a hash" do
|
55
|
-
databases = Settings::Databases.new(@from_hash)
|
56
|
-
assert_equal @from_hash, databases.value(@script)
|
57
|
-
end
|
58
|
-
|
59
|
-
should "come from a yaml file" do
|
60
|
-
databases = Settings::Databases.new(File.join(ROOT_PATH, 'test/support/test.yaml'))
|
61
|
-
assert_equal({
|
62
|
-
'db-one' => {'db' => 1},
|
63
|
-
'db-two' => {'db' => 2},
|
64
|
-
}, databases.value(@script))
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
41
|
class DumpFileSettingTests < SettingsTests
|
70
42
|
desc "`dump_file` setting"
|
71
43
|
|
@@ -92,13 +64,6 @@ module Dumpdb
|
|
92
64
|
assert_equal 'from_hash', db.host
|
93
65
|
end
|
94
66
|
|
95
|
-
should "come from a Db obj" do
|
96
|
-
db = Settings::Databases.new(Db.new('dump.file', {'host' => 'from_db'})).value(@script)
|
97
|
-
|
98
|
-
assert_kind_of Db, db
|
99
|
-
assert_equal 'from_db', db.host
|
100
|
-
end
|
101
|
-
|
102
67
|
end
|
103
68
|
|
104
69
|
class CmdTests < SettingsTests
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dumpdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
-
-
|
8
|
-
- 1
|
7
|
+
- 2
|
9
8
|
- 0
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 2.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2015-
|
19
|
+
date: 2015-12-09 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -84,7 +84,7 @@ extra_rdoc_files: []
|
|
84
84
|
files:
|
85
85
|
- .gitignore
|
86
86
|
- Gemfile
|
87
|
-
- LICENSE
|
87
|
+
- LICENSE
|
88
88
|
- README.md
|
89
89
|
- Rakefile
|
90
90
|
- dumpdb.gemspec
|
@@ -95,9 +95,8 @@ files:
|
|
95
95
|
- lib/dumpdb/version.rb
|
96
96
|
- log/.gitkeep
|
97
97
|
- test/helper.rb
|
98
|
-
- test/support/
|
98
|
+
- test/support/factory.rb
|
99
99
|
- test/support/fake_cmd_runner.rb
|
100
|
-
- test/support/test.yaml
|
101
100
|
- test/support/test_scripts.rb
|
102
101
|
- test/unit/db_tests.rb
|
103
102
|
- test/unit/runner_tests.rb
|
@@ -139,9 +138,8 @@ specification_version: 3
|
|
139
138
|
summary: Dump and restore your databases.
|
140
139
|
test_files:
|
141
140
|
- test/helper.rb
|
142
|
-
- test/support/
|
141
|
+
- test/support/factory.rb
|
143
142
|
- test/support/fake_cmd_runner.rb
|
144
|
-
- test/support/test.yaml
|
145
143
|
- test/support/test_scripts.rb
|
146
144
|
- test/unit/db_tests.rb
|
147
145
|
- test/unit/runner_tests.rb
|
data/test/support/database.yaml
DELETED