backup 4.0.5 → 4.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3962cf879bd26668539060945c2081db3bd13046
4
- data.tar.gz: 061ae2f749d7fc1494ac20c4f116e1201e8ce86a
3
+ metadata.gz: 92b075a8c0c4cd0cfb491b9eebe7a832a4bd4e0c
4
+ data.tar.gz: 3f5d1f313497276ea43879502ad2729d74c417e9
5
5
  SHA512:
6
- metadata.gz: 077072ee73e085c6151592a2506c2e65895d9a435cfdec6232c34fc67452a0f70356105de93b7aa40410ad21f6666da0f143a922edb180e8872d97a06a4e9014
7
- data.tar.gz: bb86e8d7e30d2085691b598a662e3bdb10ffc30c5ba45fe5a2f8065559129dd3a0e931cc27e47eb957809131393d114e515e1d930827dcf5ed6d0cc913c9ff77
6
+ metadata.gz: 43f674576dfddb1feefc4ffaf068b5994ac15949a12565c2c67e234383d2e6f8f946d9ffe70a6b5ccc9db75c7a94fe32aa508cf8e474b545be83f1e57a520203
7
+ data.tar.gz: baffa3b4132cce710376518ae9e7af343077dbdadaf7eb1152aaefb870d9832b785c6c5da7d29c59879fb8fbee697529e74933c39e345e633d87ff93debcd4cc
data/lib/backup.rb CHANGED
@@ -78,6 +78,7 @@ module Backup
78
78
  autoload :Redis, File.join(DATABASE_PATH, 'redis')
79
79
  autoload :Riak, File.join(DATABASE_PATH, 'riak')
80
80
  autoload :OpenLDAP, File.join(DATABASE_PATH, 'openldap')
81
+ autoload :SQLite, File.join(DATABASE_PATH, 'sqlite')
81
82
  end
82
83
 
83
84
  ##
@@ -27,7 +27,7 @@ module Backup
27
27
  create_modules(
28
28
  DSL,
29
29
  [ # Databases
30
- ['MySQL', 'PostgreSQL', 'MongoDB', 'Redis', 'Riak', 'OpenLDAP'],
30
+ ['MySQL', 'PostgreSQL', 'MongoDB', 'Redis', 'Riak', 'OpenLDAP', 'SQLite'],
31
31
  # Storages
32
32
  ['S3', 'CloudFiles', 'Ninefold', 'Dropbox', 'FTP',
33
33
  'SFTP', 'SCP', 'RSync', 'Local'],
@@ -0,0 +1,103 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Database
5
+ class SQLite < Base
6
+ class Error < Backup::Error; end
7
+
8
+ ##
9
+ # Name of the database that needs to get dumped
10
+ attr_accessor :name
11
+
12
+ # path option
13
+ attr_accessor :path
14
+
15
+ ##
16
+ # Path to sqlite utility (optional)
17
+ attr_accessor :sqlitedump_utility
18
+
19
+ ##
20
+ # Creates a new instance of the SQLite adapter object
21
+ def initialize(model, database_id = nil, &block)
22
+ super
23
+ instance_eval(&block) if block_given?
24
+
25
+ @name ||= :all
26
+ @sqlitedump_utility ||= utility(:sqlitedump)
27
+ end
28
+
29
+ ##
30
+ # Performs the sqlitedump command and outputs the
31
+ # data to the specified path based on the 'trigger'
32
+ def perform!
33
+ super
34
+
35
+ dumps = sqlitedump
36
+ db_name_list = db_names
37
+
38
+ dumps.each_with_index do |dump, i|
39
+ pipeline = Pipeline.new
40
+ dump_ext = 'sql'
41
+
42
+ pipeline << dump
43
+ if @model.compressor
44
+ @model.compressor.compress_with do |command, ext|
45
+ pipeline << command
46
+ dump_ext << ext
47
+ end
48
+ end
49
+
50
+ dump_filename = db_name_list[i]
51
+ pipeline << "cat > '#{ File.join(@dump_path, dump_filename) }.#{ dump_ext }'"
52
+
53
+ pipeline.run
54
+
55
+ if pipeline.success?
56
+ log!(:finished)
57
+ else
58
+ raise Error,
59
+ "#{ database_name } Dump Failed!\n" + pipeline.error_messages
60
+ end
61
+
62
+ i += 1
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ ##
69
+ # Builds the full SQLite dump string based on all attributes
70
+ def sqlitedump
71
+ db_names.map { |n| "echo '.dump' | #{ sqlitedump_utility } #{ db_path }#{ n }" }
72
+ end
73
+
74
+ ##
75
+ # Returns the database path and adds a / at the end if not present
76
+ def db_path
77
+ if path.length >= 1 && path[-1, 1] != "/"
78
+ "#{path}/"
79
+ else
80
+ path
81
+ end
82
+ end
83
+
84
+ ##
85
+ # Returns the database names to use in the SQLite dump command.
86
+ def db_names
87
+ if @all_dbs.nil?
88
+ @all_dbs = Dir.new(path).entries.select{|f| /.*.sqlite3$/.match(f)}
89
+ end
90
+ dump_all? ? @all_dbs : Array(name)
91
+ end
92
+
93
+ ##
94
+ # Return true if we're dumping all databases.
95
+ # `name` will be set to :all if it is not set,
96
+ # so this will be true by default
97
+ def dump_all?
98
+ name == :all
99
+ end
100
+
101
+ end
102
+ end
103
+ end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Backup
4
- VERSION = '4.0.5'
4
+ VERSION = '4.0.6'
5
5
  end
@@ -0,0 +1,12 @@
1
+ ##
2
+ # SQLite [Database]
3
+ #
4
+ database SQLite do |db|
5
+ # To dump all databases, set `db.name = :all` (or leave blank)
6
+ db.name = "my_database_name"
7
+ db.path = "/path/to/my/sqlite/db"
8
+
9
+ # Optional: Use to set the location of this utility
10
+ # if it cannot be found by name in your $PATH
11
+ db.sqlitedump_utility = "/opt/local/bin/sqlite3"
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.5
4
+ version: 4.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael van Rooijen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-08 00:00:00.000000000 Z
11
+ date: 2014-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -593,6 +593,7 @@ files:
593
593
  - lib/backup/database/postgresql.rb
594
594
  - lib/backup/database/redis.rb
595
595
  - lib/backup/database/riak.rb
596
+ - lib/backup/database/sqlite.rb
596
597
  - lib/backup/encryptor/base.rb
597
598
  - lib/backup/encryptor/gpg.rb
598
599
  - lib/backup/encryptor/open_ssl.rb
@@ -654,6 +655,7 @@ files:
654
655
  - templates/cli/databases/postgresql
655
656
  - templates/cli/databases/redis
656
657
  - templates/cli/databases/riak
658
+ - templates/cli/databases/sqlite
657
659
  - templates/cli/encryptor/gpg
658
660
  - templates/cli/encryptor/openssl
659
661
  - templates/cli/model