-
Notifications
You must be signed in to change notification settings - Fork 4
/
db.rb
46 lines (38 loc) · 1.01 KB
/
db.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
module Mongolicious
class DB
# Initialize a ne DB object.
#
# @return [DB]
def initialize
end
# Parse the MongoDB URI.
#
# @param [String] db_uri the DB URI.
#
# @return [Hash]
def get_opts(db_uri)
uri = URI.parse(db_uri)
{
:host => uri.host,
:port => uri.port,
:user => uri.user,
:password => uri.password,
:db => uri.path.gsub('/', '')
}
end
# Dump database using mongodump.
#
# @param [Hash] db the DB connection opts.
# @param [String] path the path, where the dump should be stored.
#
# @return [nil]
def dump(db, path)
Mongolicious.logger.info("Dumping database #{db[:db]}")
cmd = "mongodump -d #{db[:db]} -h #{db[:host]}:#{db[:port]} -o #{path}"
cmd << " -u '#{db[:user]}' -p '#{db[:password]}'" unless (db[:user].nil? || db[:user].empty?)
cmd << " > /dev/null"
system(cmd)
raise "Error while backuing up #{db[:db]}" if $?.to_i != 0
end
end
end