backhoe 0.9.0 → 0.10.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: '018ae4becb6f27ba167be3ab17101cdbb2b08f42eed108141b89e5ee634a133d'
4
- data.tar.gz: f760a73b1f983fb050fbf7b4be493c7a944455c8f76e623278840d44b601f2d8
3
+ metadata.gz: 779de972f23a178e054d789eb0f09c70b7200b87468a4c85d14b53de9eddcfb8
4
+ data.tar.gz: 9621e4f611daa56dc8d34abc4285b9e86dbc79d3391b0463b39cdb663b02eee2
5
5
  SHA512:
6
- metadata.gz: a96b4af2ae37f29fc611aa81a8194587b005d182ad5f7b298c84aab0a917a8e77acafea234acbfbc498000656ac3898451adbc7ceb986417c4ad6457c6469962
7
- data.tar.gz: 81dda2749d1d4b53ac8b57d784942f35941c2c9757a5295630f754bc95f9dc816697d2ea9c3572819c4c8215e4c7cde17f27197638343ab136e20e062827cef8
6
+ metadata.gz: f1ee8947074606e2d4e4eca671883cd0c3ceab65de25dfd2228eada96888c316cd756dac556c3dd0a5ee16442dee8163155cb14498917355de67201bc505a8f5
7
+ data.tar.gz: e050249511d82941b33713b915399f51264608f32a40ae9cbf7bd58dd592eafe45a9ee99e22ec6e9c80df372211ee57534b6dcf831ca6ab4c29a3d305e7968e3
@@ -8,7 +8,7 @@ jobs:
8
8
  gemfile: [ activerecord_6.0, activerecord_6.1, activerecord_7.0, activerecord_7.1 ]
9
9
  ruby: [ '3.0', 3.1, 3.2, 3.3 ]
10
10
 
11
- runs-on: ubuntu-20.04
11
+ runs-on: ubuntu-22.04
12
12
  env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
13
13
  BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
14
14
  POSTGRES_HOST_AUTH_METHOD: trust
data/backhoe.gemspec CHANGED
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "pg"
31
31
  spec.add_development_dependency "byebug"
32
32
  spec.add_development_dependency "timecop"
33
+ spec.add_development_dependency "webrick"
33
34
  end
data/lib/backhoe/dump.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "rake"
2
2
 
3
3
  module Backhoe
4
- class Dump < Struct.new(:database, :file_path, :skip_tables, :skip_columns)
4
+ class Dump < Struct.new(:database, :path, :skip_tables, :skip_columns)
5
5
  include Rake::DSL
6
6
 
7
7
  def initialize *args
@@ -16,7 +16,7 @@ module Backhoe
16
16
  end
17
17
  if skip_columns.any?
18
18
  raise NotImplementedError if database.postgresql?
19
- SanitizedDatabase.new(skip_columns, file_path).dump do |tables|
19
+ SanitizedDatabase.new(skip_columns, path).dump do |tables|
20
20
  self.skip_tables += tables
21
21
  dump
22
22
  end
@@ -29,9 +29,9 @@ module Backhoe
29
29
 
30
30
  def dump
31
31
  if database.mysql?
32
- sh "#{mysqldump} --no-create-db --single-transaction --quick -e #{skip_table_options} #{database.to_mysql_options} #{database.name} | #{pipe} > #{file_path}"
32
+ sh "#{mysqldump} --no-create-db --single-transaction --quick -e #{skip_table_options} #{database.to_mysql_options} #{database.name} | #{pipe} #{target}"
33
33
  elsif database.postgresql?
34
- sh "#{pg_dump} --column-inserts #{database.name} | #{pipe} > #{file_path}"
34
+ sh "#{pg_dump} --column-inserts #{database.name} | #{pipe} #{target}"
35
35
  else
36
36
  raise "don't know how to dump #{database.adapter}"
37
37
  end
@@ -39,6 +39,14 @@ module Backhoe
39
39
 
40
40
  private
41
41
 
42
+ def target
43
+ if path =~ /^https?:\/\//
44
+ "| curl -X PUT -H 'Content-Type: application/octet-stream' --data-binary @- '#{path}'"
45
+ else
46
+ "> #{path}"
47
+ end
48
+ end
49
+
42
50
  def mysqldump
43
51
  cmd = `which mysqldump`.strip
44
52
  raise RuntimeError, "Cannot find mysqldump." if cmd.blank?
@@ -52,7 +60,7 @@ module Backhoe
52
60
  end
53
61
 
54
62
  def pipe
55
- file_path =~ /\.gz$/ ? "gzip -9f" : "cat"
63
+ path =~ /\.gz\b/ ? "gzip -9f" : "cat"
56
64
  end
57
65
 
58
66
  def skip_table_options
@@ -61,13 +69,13 @@ module Backhoe
61
69
  end.join(" ")
62
70
  end
63
71
 
64
- class SanitizedDatabase < Struct.new(:config, :file_path)
72
+ class SanitizedDatabase < Struct.new(:config, :path)
65
73
  def dump
66
74
  with_sanitized_tables do
67
75
  yield skip_tables
68
76
  end
69
77
  skip_tables.each do |table|
70
- File.write file_path, "RENAME TABLE `sanitized_#{table}` TO `#{table}`;", mode: "a"
78
+ File.write path, "RENAME TABLE `sanitized_#{table}` TO `#{table}`;", mode: "a"
71
79
  end
72
80
  end
73
81
 
data/lib/backhoe/load.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "rake"
2
2
 
3
3
  module Backhoe
4
- class Load < Struct.new(:database, :file_path, :drop_and_create)
4
+ class Load < Struct.new(:database, :path, :drop_and_create)
5
5
  include Rake::DSL
6
6
 
7
7
  def call
@@ -18,7 +18,7 @@ module Backhoe
18
18
  private
19
19
 
20
20
  def mysql_command
21
- cmd = "#{cat} #{file_path} | "
21
+ cmd = "#{cat} #{path} | "
22
22
  cmd += if drop_and_create
23
23
  "#{pipe} | #{mysql} #{database.to_mysql_options}"
24
24
  else
@@ -27,7 +27,7 @@ module Backhoe
27
27
  end
28
28
 
29
29
  def psql_command
30
- cmd = "#{cat} #{file_path} | "
30
+ cmd = "#{cat} #{path} | "
31
31
  if drop_and_create
32
32
  cmd = "dropdb -f #{database.name}; createdb #{database.name}; #{cmd}"
33
33
  end
@@ -36,7 +36,7 @@ module Backhoe
36
36
  end
37
37
 
38
38
  def cat
39
- file_path =~ /\.gz$/ ? "zcat" : "cat"
39
+ path =~ /\.gz$/ ? "zcat" : "cat"
40
40
  end
41
41
 
42
42
  def pipe
@@ -1,3 +1,3 @@
1
1
  module Backhoe
2
- VERSION = "0.9.0"
2
+ VERSION = "0.10.0"
3
3
  end
data/lib/backhoe.rb CHANGED
@@ -6,12 +6,12 @@ require "active_record"
6
6
 
7
7
  module Backhoe
8
8
  class << self
9
- def dump file_path, skip_tables: [], skip_columns: {}
10
- Dump.new(Database.new, file_path, skip_tables, skip_columns).call
9
+ def dump path, skip_tables: [], skip_columns: {}
10
+ Dump.new(Database.new, path, skip_tables, skip_columns).call
11
11
  end
12
12
 
13
- def load file_path, drop_and_create: false
14
- Load.new(Database.new, file_path, drop_and_create).call
13
+ def load path, drop_and_create: false
14
+ Load.new(Database.new, path, drop_and_create).call
15
15
  end
16
16
  end
17
17
  end
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.9.0
4
+ version: 0.10.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-07-22 00:00:00.000000000 Z
11
+ date: 2024-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: webrick
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description: Dump and load current database to and from a file.
126
140
  email:
127
141
  - micah@botandrose.com