glacier_on_rails 0.9.5 → 0.9.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 +4 -4
- data/Gemfile.lock +1 -1
- data/app/models/application_database/postgres_adapter.rb +8 -0
- data/app/models/application_database.rb +3 -2
- data/app/models/aws_backend.rb +1 -1
- data/app/models/glacier_db_archive.rb +2 -0
- data/glacier_on_rails.gemspec +2 -2
- data/spec/features/application_data_backup_spec.rb +15 -0
- data/spec/models/postgres_adapter_spec.rb +45 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b787edca23f9db4ca73cbf890c3cbd953cbdd22
|
4
|
+
data.tar.gz: b72bc1553df28d0006b6d8716fdffd5c1d4feec2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbe7502e6960ad4486f06678410c0fa2c6ad0f2f6dd5157bf45c7c67b4dfa32b1cccf7e9de12b0ec3dc456597ba8a07316bb7d8c71ee833b6745c899e765c45a
|
7
|
+
data.tar.gz: b7eefdc7c7d81cff6ba92bc423d80053fc17247fd7d1f559eb61b1e257ef71d28792058080e077d433bce011f02e09750469beadf9fe44972dac15f494468ea9
|
data/Gemfile.lock
CHANGED
@@ -2,6 +2,13 @@ class ApplicationDatabase::PostgresAdapter < ApplicationDatabase::BaseAdapter
|
|
2
2
|
class PgDumpCmdMissing < StandardError; end
|
3
3
|
class PgRestoreCmdMissing < StandardError; end
|
4
4
|
class PgRestoreFileMissing < StandardError; end
|
5
|
+
class PgPassFileMissing < StandardError
|
6
|
+
def initialize
|
7
|
+
message = "~/.pgpass file not found, cannot dump database contents"
|
8
|
+
AwsLog.error "ApplicationDatabase::PostgresAdapter::PgPassFileMissing exception: #{message}"
|
9
|
+
super(message)
|
10
|
+
end
|
11
|
+
end
|
5
12
|
|
6
13
|
RestoreExclusions = %w{ application_data_backups
|
7
14
|
glacier_archives
|
@@ -10,6 +17,7 @@ class ApplicationDatabase::PostgresAdapter < ApplicationDatabase::BaseAdapter
|
|
10
17
|
RestoreList = GlacierArchive::BackupFileDir.join('restore.list')
|
11
18
|
|
12
19
|
def contents
|
20
|
+
raise PgPassFileMissing if db_config["password"].present? && !File.exists?("~/.pgpass")
|
13
21
|
`#{pg_dump} -w -Fc -U #{db_config['username']} #{db_config['database']}`
|
14
22
|
end
|
15
23
|
|
@@ -1,8 +1,9 @@
|
|
1
1
|
class ApplicationDatabase
|
2
2
|
class MissingConfigurationKeys < StandardError
|
3
3
|
def initialize(missing_keys)
|
4
|
-
|
5
|
-
|
4
|
+
message = "#{missing_keys.join(' and ')} must be specified in config/database.yml"
|
5
|
+
AwsLog.error "ApplicationDatabase::MissingConfigurationKeys exception: #{message}"
|
6
|
+
super(message)
|
6
7
|
end
|
7
8
|
end
|
8
9
|
|
data/app/models/aws_backend.rb
CHANGED
@@ -13,7 +13,7 @@ class AwsBackend
|
|
13
13
|
@client.create_vault({:account_id => "-", :vault_name => ::SITE_NAME})
|
14
14
|
end
|
15
15
|
rescue => e
|
16
|
-
AwsLog.
|
16
|
+
AwsLog.error "Failed to initialize AwsBackend: #{e.class.name}: #{e.message}"
|
17
17
|
raise
|
18
18
|
end
|
19
19
|
|
data/glacier_on_rails.gemspec
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "glacier_on_rails"
|
6
|
-
s.version = "0.9.
|
6
|
+
s.version = "0.9.6"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
9
|
s.authors = ["Les Nightingill"]
|
10
|
-
s.date = "2017-07-
|
10
|
+
s.date = "2017-07-12"
|
11
11
|
s.description = "Rails engine for database backup/restore to/from Amazon Glacier, including file attachments."
|
12
12
|
s.email = ["codehacker@comcast.net"]
|
13
13
|
s.files = Dir.glob("{{app,config,db,lib,script,spec}/**/*,*}").reject{|f| f =~ /(cache|\.log|\.gem$)/}
|
@@ -175,4 +175,19 @@ feature "backup_now", :js => true do
|
|
175
175
|
expect(flash_message).to eq "failed to create backup"
|
176
176
|
end
|
177
177
|
end
|
178
|
+
|
179
|
+
context "when there is a missing database password file" do
|
180
|
+
before do
|
181
|
+
ActiveRecord::Base.configurations[Rails.env].merge!({"password" => "sekret"})
|
182
|
+
allow(File).to receive(:exists?)
|
183
|
+
allow(File).to receive(:exists?).with("~/.pgpass").and_return(false)
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should not create a new application_data_backup" do
|
187
|
+
expect{page.find('#backup_now').click; wait_for_ajax}.not_to change{ApplicationDataBackup.count}
|
188
|
+
expect(page).not_to have_selector("#application_data_backups .application_data_backup")
|
189
|
+
expect(flash_message).to eq "failed to create backup"
|
190
|
+
expect(aws_log).to match /ApplicationDatabase::PostgresAdapter::PgPassFileMissing exception: ~\/.pgpass file not found, cannot dump database contents/
|
191
|
+
end
|
192
|
+
end
|
178
193
|
end
|
@@ -1,6 +1,51 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
# helpers are all required in spec helper
|
3
3
|
|
4
|
+
describe "PostgresAdapter#contents dependence on password file ~/.pgpass" do
|
5
|
+
before do
|
6
|
+
@config = ActiveRecord::Base.configurations[Rails.env].dup
|
7
|
+
end
|
8
|
+
after do
|
9
|
+
ActiveRecord::Base.configurations[Rails.env] = @config
|
10
|
+
end
|
11
|
+
|
12
|
+
context "password not required in database config" do
|
13
|
+
before do
|
14
|
+
ActiveRecord::Base.configurations[Rails.env].merge!({"password" => nil })
|
15
|
+
allow(File).to receive(:exists?)
|
16
|
+
allow(File).to receive(:exists?).with("~/.pgpass").and_return(false)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should not raise an exception" do
|
20
|
+
expect{ ApplicationDatabase.new.contents }.not_to raise_exception
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "password is required in database config" do
|
25
|
+
before do
|
26
|
+
ActiveRecord::Base.configurations[Rails.env].merge!({"password" => "sekret"})
|
27
|
+
allow(File).to receive(:exists?)
|
28
|
+
allow(File).to receive(:exists?).with("~/.pgpass").and_return(false)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should raise an exception" do
|
32
|
+
expect{ ApplicationDatabase.new.contents }.to raise_exception ApplicationDatabase::PostgresAdapter::PgPassFileMissing
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "password is required in database config and .pgpass file is present" do
|
37
|
+
before do
|
38
|
+
ActiveRecord::Base.configurations[Rails.env].merge!({"password" => "sekret"})
|
39
|
+
allow(File).to receive(:exists?)
|
40
|
+
allow(File).to receive(:exists?).with("~/.pgpass").and_return(true)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should not raise an exception" do
|
44
|
+
expect{ ApplicationDatabase.new.contents }.not_to raise_exception
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
4
49
|
describe "PostgresAdapter#create_object_restoral_list_omitting_exclusions" do
|
5
50
|
include HttpMockHelpers
|
6
51
|
include AwsHelper
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glacier_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Les Nightingill
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|