backy_rb 0.1.5 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -4
- data/lib/backy/cli.rb +1 -1
- data/lib/backy/configuration.rb +43 -5
- data/lib/backy/s3.rb +1 -0
- data/lib/backy/s3_list.rb +0 -10
- data/lib/backy/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00ab5005d9a22cf24c18c8fb7a9a5fa0a202eb1a19ee137cca3d51f41999bfc6
|
4
|
+
data.tar.gz: 1a9e412072b4d6f57e9c1d32362eddcbecd5f700ae8f612d4c67a5604be3e176
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5440e8a4dbd149b823ebe27115277a5fafd96cdafec5f4a6269bb7d8832b02cf206feac6f673cef89e84d325b97c0fc75e9698e0e002c5eed974dada5fcbdb16
|
7
|
+
data.tar.gz: 6f9534e4a3a33e1281a85d926bd6b4b1a348ea95061ba22828b2b24d4a8404bd831c51d6cb5e3766a094f66b7dad2f6d4cfd45019f638e2731cb3308dad7f169
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,25 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to `Backy` will be documented in this file.
|
4
|
+
|
1
5
|
## [Unreleased]
|
2
6
|
|
3
|
-
## [0.1.
|
4
|
-
|
7
|
+
## [0.1.7] - 2024-06-21
|
8
|
+
### Added
|
9
|
+
- Support for setting database params via PG_URL
|
10
|
+
- Make S3 bucket prefix configurable
|
11
|
+
|
12
|
+
## [0.1.6] - 2023-12-28
|
13
|
+
### Added
|
14
|
+
- Support for parallel pg_dump processes.
|
15
|
+
- Support for parallel pg_restore processes.
|
16
|
+
- Added CLI
|
5
17
|
|
6
|
-
|
18
|
+
### Changed
|
19
|
+
- Improved performance of the backup process.
|
20
|
+
- Rename gem from `backy` to `backy_rb`.
|
7
21
|
|
8
|
-
-
|
22
|
+
## [0.1.3] - 2023-06-23
|
23
|
+
- Initial release of `Backy`.
|
24
|
+
- Support for AWS S3 integration.
|
25
|
+
- Rails application auto-configuration feature.
|
data/lib/backy/cli.rb
CHANGED
@@ -20,7 +20,7 @@ module Backy
|
|
20
20
|
file_name = Backy::PgDump.new.call
|
21
21
|
save_to_s3(file_name)
|
22
22
|
File.delete(file_name) if File.exist?(file_name)
|
23
|
-
Logger.
|
23
|
+
Logger.success("Dump pushed to S3 and local file deleted.")
|
24
24
|
end
|
25
25
|
|
26
26
|
desc "upload", "Upload a specific file to S3"
|
data/lib/backy/configuration.rb
CHANGED
@@ -10,6 +10,7 @@ module Backy
|
|
10
10
|
:s3_access_key,
|
11
11
|
:s3_secret,
|
12
12
|
:s3_bucket,
|
13
|
+
:s3_prefix,
|
13
14
|
:app_name,
|
14
15
|
:environment,
|
15
16
|
:use_parallel,
|
@@ -25,6 +26,20 @@ module Backy
|
|
25
26
|
load_from_file(config_file) if File.exist?(config_file)
|
26
27
|
end
|
27
28
|
|
29
|
+
def pg_url=(url)
|
30
|
+
@pg_url = url
|
31
|
+
pg_config = parse_postgres_uri(url)
|
32
|
+
@pg_host = pg_config[:host]
|
33
|
+
@pg_port = pg_config[:port]
|
34
|
+
@pg_username = pg_config[:username]
|
35
|
+
@pg_password = pg_config[:password]
|
36
|
+
@pg_database = pg_config[:database_name]
|
37
|
+
end
|
38
|
+
|
39
|
+
def pg_url
|
40
|
+
@pg_url ||= ENV["PG_URL"]
|
41
|
+
end
|
42
|
+
|
28
43
|
def pg_host
|
29
44
|
@pg_host ||= ENV["PG_HOST"]
|
30
45
|
end
|
@@ -61,6 +76,10 @@ module Backy
|
|
61
76
|
@s3_bucket ||= ENV["S3_BUCKET"]
|
62
77
|
end
|
63
78
|
|
79
|
+
def s3_prefix
|
80
|
+
@s3_prefix ||= ENV["S3_PREFIX"].presence || "/db/dump/"
|
81
|
+
end
|
82
|
+
|
64
83
|
def use_parallel
|
65
84
|
@use_parallel ||= ENV["BACKY_USE_PARALLEL"] == "true"
|
66
85
|
end
|
@@ -113,17 +132,36 @@ module Backy
|
|
113
132
|
@s3_secret = configuration.dig("defaults", "s3", "secret_access_key")
|
114
133
|
@s3_region = configuration.dig("defaults", "s3", "region")
|
115
134
|
@s3_bucket = configuration.dig("defaults", "s3", "bucket")
|
135
|
+
@s3_prefix = configuration.dig("defaults", "s3", "prefix") || s3_prefix
|
116
136
|
|
117
|
-
@
|
118
|
-
@
|
119
|
-
|
120
|
-
|
121
|
-
|
137
|
+
@pg_url = configuration.dig("defaults", "database", "pg_url")
|
138
|
+
if @pg_url
|
139
|
+
self.pg_url = @pg_url
|
140
|
+
else
|
141
|
+
@pg_host = configuration.dig("defaults", "database", "host")
|
142
|
+
@pg_port = configuration.dig("defaults", "database", "port")
|
143
|
+
@pg_username = configuration.dig("defaults", "database", "username")
|
144
|
+
@pg_password = configuration.dig("defaults", "database", "password")
|
145
|
+
@pg_database = configuration.dig("defaults", "database", "database_name")
|
146
|
+
end
|
122
147
|
|
123
148
|
@app_name = configuration.dig("defaults", "app_name") || "backy"
|
124
149
|
@environment = configuration.dig("defaults", "environment") || "development"
|
125
150
|
@log_file = configuration.dig("defaults", "log", "file") || default_log_file
|
126
151
|
@use_parallel = configuration.dig("defaults", "use_parallel") || false
|
127
152
|
end
|
153
|
+
|
154
|
+
def parse_postgres_uri(uri)
|
155
|
+
parsed_uri = URI.parse(uri)
|
156
|
+
|
157
|
+
{
|
158
|
+
adapter: "postgresql",
|
159
|
+
host: parsed_uri.host,
|
160
|
+
port: parsed_uri.port,
|
161
|
+
username: parsed_uri.user,
|
162
|
+
password: parsed_uri.password,
|
163
|
+
database_name: parsed_uri.path[1..]
|
164
|
+
}
|
165
|
+
end
|
128
166
|
end
|
129
167
|
end
|
data/lib/backy/s3.rb
CHANGED
@@ -11,6 +11,7 @@ module Backy
|
|
11
11
|
def_delegator "Backy.configuration", :s3_secret, :secret
|
12
12
|
def_delegator "Backy.configuration", :s3_bucket, :bucket
|
13
13
|
def_delegator "Backy.configuration", :s3_access_key, :access_key
|
14
|
+
def_delegator "Backy.configuration", :s3_prefix, :prefix
|
14
15
|
|
15
16
|
def s3
|
16
17
|
@s3 ||= Aws::S3::Client.new(region: region, credentials: s3_credentials)
|
data/lib/backy/s3_list.rb
CHANGED
@@ -2,12 +2,6 @@ module Backy
|
|
2
2
|
class S3List
|
3
3
|
include S3
|
4
4
|
|
5
|
-
DEFAULT_PREFIX = "db/dump/"
|
6
|
-
|
7
|
-
def initialize(prefix: nil)
|
8
|
-
@prefix = prefix || DEFAULT_PREFIX
|
9
|
-
end
|
10
|
-
|
11
5
|
def call
|
12
6
|
return [] unless s3_configured?
|
13
7
|
|
@@ -23,9 +17,5 @@ module Backy
|
|
23
17
|
|
24
18
|
result.sort
|
25
19
|
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
attr_reader :prefix
|
30
20
|
end
|
31
21
|
end
|
data/lib/backy/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backy_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey Kharchenko
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-06-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -272,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
272
272
|
- !ruby/object:Gem::Version
|
273
273
|
version: '0'
|
274
274
|
requirements: []
|
275
|
-
rubygems_version: 3.
|
275
|
+
rubygems_version: 3.5.5
|
276
276
|
signing_key:
|
277
277
|
specification_version: 4
|
278
278
|
summary: Backy is a powerful and user-friendly database backup gem designed specifically
|