brdb 0.0.1
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 +7 -0
- data/bin/bdb +4 -0
- data/bin/rdb +4 -0
- data/lib/brdb.rb +99 -0
- metadata +48 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 0eab4ce363eec1abe583b45c6c52c644531cf8e60443d1fec64f371c66667b41
|
|
4
|
+
data.tar.gz: 0dd06c6bd1daa3b95e2db21fb7e1cdde5c0e35cddcdfa233a89752042a430980
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 187b09d4282804040883f445dab016ca359a31a3766417da94152be12e5731569a5ef3b2e48b5f2d70dd1aa7e14ce3a66eaa7f9486c255a009633f63c0f65d75
|
|
7
|
+
data.tar.gz: 5a19a5e5a8340c5c0392c258fa8d62e71978329c1a5285fbe3aba66962d1423e207ee88238b294de7c7d4ff5a0a5032d0d0bb3623f3b4717b21c38520c2612d4
|
data/bin/bdb
ADDED
data/bin/rdb
ADDED
data/lib/brdb.rb
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
|
|
3
|
+
module BRDB
|
|
4
|
+
class RestoreDatabase
|
|
5
|
+
def initialize
|
|
6
|
+
@backups_dir = "#{ENV['HOME']}/db_backups/"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.run
|
|
10
|
+
self.new.perform
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def perform
|
|
14
|
+
return unless dbname
|
|
15
|
+
return unless backup_filename
|
|
16
|
+
|
|
17
|
+
print "database: #{dbname}\nbackup: #{backup_filename}\n perform restore?\n(y/n)"
|
|
18
|
+
x = $stdin.gets.chomp!
|
|
19
|
+
|
|
20
|
+
if x == 'y'
|
|
21
|
+
puts 'dropping db...'
|
|
22
|
+
`RAILS_ENV=development bundle exec rake db:drop development`
|
|
23
|
+
|
|
24
|
+
puts 'creating db...'
|
|
25
|
+
`createdb #{dbname}`
|
|
26
|
+
|
|
27
|
+
puts "restoring db from #{backup_filename}"
|
|
28
|
+
`psql #{dbname} < #{backups_dir}#{backup_filename}`
|
|
29
|
+
else
|
|
30
|
+
puts 'aborted'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
attr_accessor :backups_dir
|
|
36
|
+
|
|
37
|
+
def backup_filename
|
|
38
|
+
@backup_filename ||= unless ARGV[0].nil?
|
|
39
|
+
ARGV[0] == '--f' ? `ls #{backups_dir} | grep #{dbname} | fzf`.chomp : ARGV[0]
|
|
40
|
+
else
|
|
41
|
+
pwd = Dir.pwd
|
|
42
|
+
Dir.chdir(backups_dir)
|
|
43
|
+
|
|
44
|
+
filename = Dir["*"]
|
|
45
|
+
.select { |str| str.include?(dbname) }
|
|
46
|
+
.sort_by { |file_name| File.stat(file_name).mtime }
|
|
47
|
+
.last
|
|
48
|
+
|
|
49
|
+
Dir.chdir(pwd)
|
|
50
|
+
filename.tap { |f| puts "backup file not found in #{backups_dir}" unless f }
|
|
51
|
+
end
|
|
52
|
+
rescue Errno::ENOENT
|
|
53
|
+
puts "directory #{backups_dir} not found"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def dbname
|
|
57
|
+
@dbname ||= YAML.load_file('./config/database.yml')['development']['database']
|
|
58
|
+
rescue Errno::ENOENT
|
|
59
|
+
puts 'file ./config/database.yml not found'
|
|
60
|
+
return false
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
class BackupDatabase
|
|
65
|
+
def initialize
|
|
66
|
+
@backups_dir = "#{ENV['HOME']}/db_backups/"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def self.run
|
|
70
|
+
self.new.perform
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def perform
|
|
74
|
+
return unless dbname
|
|
75
|
+
|
|
76
|
+
puts 'performing backup...'
|
|
77
|
+
`pg_dump #{dbname} > #{backup_filename}`
|
|
78
|
+
puts "=> #{backup_filename}"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
private
|
|
82
|
+
attr_reader :backups_dir
|
|
83
|
+
|
|
84
|
+
def backup_filename
|
|
85
|
+
@backup_filename ||= "#{backups_dir}#{dbname}_#{timestamp}"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def timestamp
|
|
89
|
+
Time.now.to_s.gsub('-', '').gsub(':', '').split[0..1].join
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def dbname
|
|
93
|
+
@dbname ||= YAML.load_file('./config/database.yml')['development']['database']
|
|
94
|
+
rescue Errno::ENOENT
|
|
95
|
+
puts 'file ./config/database.yml not found'
|
|
96
|
+
return false
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: brdb
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Kazimierz Szołtysik
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2018-02-13 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: A simple utility providing db backups for Ruby on Rails projects
|
|
14
|
+
email: kazimierz.szoltysik@gmail.com
|
|
15
|
+
executables:
|
|
16
|
+
- bdb
|
|
17
|
+
- rdb
|
|
18
|
+
extensions: []
|
|
19
|
+
extra_rdoc_files: []
|
|
20
|
+
files:
|
|
21
|
+
- bin/bdb
|
|
22
|
+
- bin/rdb
|
|
23
|
+
- lib/brdb.rb
|
|
24
|
+
homepage: http://rubygems.org/gems/brdb
|
|
25
|
+
licenses:
|
|
26
|
+
- MIT
|
|
27
|
+
metadata: {}
|
|
28
|
+
post_install_message:
|
|
29
|
+
rdoc_options: []
|
|
30
|
+
require_paths:
|
|
31
|
+
- lib
|
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
33
|
+
requirements:
|
|
34
|
+
- - ">="
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: '0'
|
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
requirements: []
|
|
43
|
+
rubyforge_project:
|
|
44
|
+
rubygems_version: 2.7.5
|
|
45
|
+
signing_key:
|
|
46
|
+
specification_version: 4
|
|
47
|
+
summary: backup/restore database utility
|
|
48
|
+
test_files: []
|