backhoe 0.8.2 → 0.9.0

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
  SHA256:
3
- metadata.gz: 91bb96241374c9086d26c89dc3336c54d0b4c1071059ea47621d4abf8adea754
4
- data.tar.gz: 28cf8c779db0ffc0c7991318ecf8dd86f5aa82be119573a58ce266991e8a60e1
3
+ metadata.gz: '018ae4becb6f27ba167be3ab17101cdbb2b08f42eed108141b89e5ee634a133d'
4
+ data.tar.gz: f760a73b1f983fb050fbf7b4be493c7a944455c8f76e623278840d44b601f2d8
5
5
  SHA512:
6
- metadata.gz: 47ed37d533703bc249a9758aa5d6651fe72e5e72f08ff9afc5a3301079c85686b594c664ff15aebfa843166430d34bd34b941377029306028d19b3d9cc91d178
7
- data.tar.gz: 424e96b933664a6b3a54edc38370c68e122c9cd4cfaa254bce802447fbe9d4e638feb5c3663835a5a6725779f9a8510077ad4b62a98d905fe156486af53745b9
6
+ metadata.gz: a96b4af2ae37f29fc611aa81a8194587b005d182ad5f7b298c84aab0a917a8e77acafea234acbfbc498000656ac3898451adbc7ceb986417c4ad6457c6469962
7
+ data.tar.gz: 81dda2749d1d4b53ac8b57d784942f35941c2c9757a5295630f754bc95f9dc816697d2ea9c3572819c4c8215e4c7cde17f27197638343ab136e20e062827cef8
data/README.md CHANGED
@@ -15,9 +15,6 @@ Backhoe.dump "data.sql", skip_tables: [:comments], skip_columns: { users: [:pass
15
15
  Backhoe.load "data.sql" # loads db from db/data.sql
16
16
  Backhoe.load "data.sql.gz" # => can also load a gzipped sql file
17
17
  Backhoe.load "data.sql", drop_and_create: true # injects DROP and CREATE statements into the SQL invocation
18
-
19
- # Backup db to S3
20
- Backhoe.backup "bucket-name/folder", access_key: "abc123", secret_key: "def456" # => must specify AWS creds
21
18
  ```
22
19
 
23
20
  ## Development
@@ -1,3 +1,3 @@
1
1
  module Backhoe
2
- VERSION = "0.8.2"
2
+ VERSION = "0.9.0"
3
3
  end
data/lib/backhoe.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require "backhoe/version"
2
2
  require "backhoe/dump"
3
3
  require "backhoe/load"
4
- require "backhoe/backup"
5
4
  require "backhoe/database"
6
5
  require "active_record"
7
6
 
@@ -14,10 +13,6 @@ module Backhoe
14
13
  def load file_path, drop_and_create: false
15
14
  Load.new(Database.new, file_path, drop_and_create).call
16
15
  end
17
-
18
- def backup s3_path, access_key:, secret_key:
19
- Backup.new(s3_path, access_key, secret_key).call
20
- end
21
16
  end
22
17
  end
23
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backhoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-22 00:00:00.000000000 Z
11
+ date: 2024-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -146,7 +146,6 @@ files:
146
146
  - gemfiles/activerecord_7.0.gemfile
147
147
  - gemfiles/activerecord_7.1.gemfile
148
148
  - lib/backhoe.rb
149
- - lib/backhoe/backup.rb
150
149
  - lib/backhoe/database.rb
151
150
  - lib/backhoe/dump.rb
152
151
  - lib/backhoe/load.rb
@@ -1,79 +0,0 @@
1
- require "net/http"
2
- require "openssl"
3
- require "base64"
4
-
5
- module Backhoe
6
- class Backup < Struct.new(:s3_path, :access_key, :secret_key)
7
- def call
8
- @time = Time.now
9
-
10
- Backhoe.dump path
11
-
12
- uri = URI("https://s3-us-west-2.amazonaws.com/#{s3_path}/#{filename}")
13
-
14
- request = Net::HTTP::Put.new(uri, {
15
- "Content-Length": File.size(path).to_s,
16
- "Content-Type": content_type,
17
- "Date": date,
18
- "Authorization": "AWS #{access_key}:#{signature}",
19
- "x-amz-storage-class": "STANDARD",
20
- "x-amz-acl": "private",
21
- })
22
- request.body_stream = File.open(path)
23
-
24
- Net::HTTP.start(uri.hostname) do |http|
25
- response = http.request(request)
26
- response.value # raises if not success
27
- end
28
- end
29
-
30
- private
31
-
32
- def signature
33
- digester = OpenSSL::Digest::SHA1.new
34
- digest = OpenSSL::HMAC.digest(digester, secret_key, key)
35
- Base64.strict_encode64(digest)
36
- end
37
-
38
- def key
39
- [
40
- "PUT",
41
- "",
42
- content_type,
43
- date,
44
- acl,
45
- storage_type,
46
- full_s3_path,
47
- ].join("\n")
48
- end
49
-
50
- def content_type
51
- "application/gzip"
52
- end
53
-
54
- def date
55
- @time.rfc2822
56
- end
57
-
58
- def acl
59
- "x-amz-acl:private"
60
- end
61
-
62
- def storage_type
63
- "x-amz-storage-class:STANDARD"
64
- end
65
-
66
- def full_s3_path
67
- "/#{s3_path}/#{filename}"
68
- end
69
-
70
- def path
71
- "/tmp/#{filename}"
72
- end
73
-
74
- def filename
75
- "#{@time.utc.iso8601}.sql.gz"
76
- end
77
- end
78
- end
79
-