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.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/bin/bdb +4 -0
  3. data/bin/rdb +4 -0
  4. data/lib/brdb.rb +99 -0
  5. metadata +48 -0
@@ -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
@@ -0,0 +1,4 @@
1
+ #!ruby
2
+
3
+ require 'brdb'
4
+ ::BRDB::BackupDatabase.run
data/bin/rdb ADDED
@@ -0,0 +1,4 @@
1
+ #!ruby
2
+
3
+ require 'brdb'
4
+ ::BRDB::RestoreDatabase.run
@@ -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: []