parity 3.0.1.beta → 3.4.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: c6487d859e68a76de90b512a5c33ba8447a27829836f3c3ef9eb1c153d64d7d8
4
- data.tar.gz: 3b182e1402a1030bfcd992131a59ed025597fd5f57c38ffb467ad2d6c11a4ba4
3
+ metadata.gz: 848792197642939ee65244b1b52cf46e247aaed2cdd23b7d145f8d0377f6b679
4
+ data.tar.gz: 96c978c1fbd49f12a4b35951da33ca958115875057a35b5be6c0912d9b252f72
5
5
  SHA512:
6
- metadata.gz: 81fd62a14198ead8f3e2246e82ac3d91ce466992c6c25d9e0209d720ee789992b68b3c1d703ea66b9fb3d25b8a48fdc6a40b193e923ca3adebfd03b311824d73
7
- data.tar.gz: f3527632e325614db7e0f381bb3bcf93a1213e90c6b48d85216d132c03dc6d3274e5951e46fab4a39db6274a74fa9eb7ce38f36f60128cc9dbf94e606de8b826
6
+ metadata.gz: f99f89a6f7d44c1223b699c32d80e6ab1279b34f06f6c2efb83d9e4974cd877d98fb4461768d509afb0010c30be0d58b2d86fa70f3f35032e69c29d188fdb864
7
+ data.tar.gz: bd98116578f9f6d492ecf99afd170ac0d242ad9c248f370cdc6f77ad957bd91d7a6bcbfb73cd0261edcc854cfe85484064c63d71efacc6a22bef5f0748022e53
data/README.md CHANGED
@@ -61,7 +61,7 @@ Push your local development database backup up to staging:
61
61
 
62
62
  staging restore development
63
63
 
64
- Deploy master to production (note that prior versions of Parity would run
64
+ Deploy main to production (note that prior versions of Parity would run
65
65
  database migrations, that's now better handled using [Heroku release phase]):
66
66
 
67
67
  production deploy
@@ -104,6 +104,12 @@ with `heroku ______ --remote staging` or `heroku ______ --remote production`:
104
104
  watch production ps
105
105
  staging open
106
106
 
107
+ You can optionally parallelize a DB restore by passing `--parallelize`
108
+ as a flag to the `development` or `production` commands:
109
+ ```
110
+ development restore-from production --parallelize
111
+ ```
112
+
107
113
  [2]: http://redis.io/commands
108
114
 
109
115
  Convention
@@ -191,7 +197,7 @@ See guidelines in [`RELEASING.md`](RELEASING.md) for details
191
197
  License
192
198
  -------
193
199
 
194
- Parity is © 2013-2018 thoughtbot, inc.
200
+ Parity is © 2013-2021 thoughtbot, inc.
195
201
  It is free software,
196
202
  and may be redistributed under the terms specified in the [LICENSE] file.
197
203
 
data/bin/pr_app CHANGED
@@ -9,7 +9,7 @@ if ARGV.empty?
9
9
  else
10
10
  review_app_number = ARGV.first
11
11
  staging_git_remote = Open3.capture3("git remote get-url staging")[0].strip
12
- review_app_prefix = staging_git_remote.split("/").last.gsub(/\.git\Z/, "")
12
+ review_app_prefix = staging_git_remote.split("/").last.gsub(/\.git\Z/, "")[0, 20]
13
13
 
14
14
  exit Parity::Environment.new(
15
15
  "#{review_app_prefix}-pr-#{review_app_number}",
data/lib/parity.rb CHANGED
@@ -4,6 +4,7 @@ require "parity/heroku_app_name"
4
4
  require "parity/version"
5
5
  require "parity/environment"
6
6
  require "parity/usage"
7
+ require "erb"
7
8
  require "open3"
8
9
  require "pathname"
9
10
  require "uri"
data/lib/parity/backup.rb CHANGED
@@ -10,6 +10,7 @@ module Parity
10
10
  def initialize(args)
11
11
  @from, @to = args.values_at(:from, :to)
12
12
  @additional_args = args[:additional_args] || BLANK_ARGUMENTS
13
+ @parallelize = args[:parallelize] || false
13
14
  end
14
15
 
15
16
  def restore
@@ -24,7 +25,9 @@ module Parity
24
25
 
25
26
  private
26
27
 
27
- attr_reader :additional_args, :from, :to
28
+ attr_reader :additional_args, :from, :to, :parallelize
29
+
30
+ alias :parallelize? :parallelize
28
31
 
29
32
  def restore_from_development
30
33
  reset_remote_database
@@ -72,7 +75,7 @@ module Parity
72
75
 
73
76
  def restore_from_local_temp_backup
74
77
  Kernel.system(
75
- "pg_restore tmp/latest.backup --verbose --clean --no-acl --no-owner "\
78
+ "pg_restore tmp/latest.backup --verbose --no-acl --no-owner "\
76
79
  "--dbname #{development_db} --jobs=#{processor_cores} "\
77
80
  "#{additional_args}",
78
81
  )
@@ -111,14 +114,14 @@ module Parity
111
114
  end
112
115
 
113
116
  def database_yaml_file
114
- IO.read(DATABASE_YML_RELATIVE_PATH)
117
+ ERB.new(IO.read(DATABASE_YML_RELATIVE_PATH)).result
115
118
  end
116
119
 
117
120
  def processor_cores
118
- if ruby_version_over_2_2?
121
+ if parallelize? && ruby_version_over_2_2?
119
122
  Etc.nprocessors
120
123
  else
121
- 2
124
+ 1
122
125
  end
123
126
  end
124
127
 
@@ -41,14 +41,27 @@ module Parity
41
41
 
42
42
  def deploy
43
43
  if production?
44
- Kernel.system("git push production master")
44
+ Kernel.system("git push production #{branch_ref}")
45
45
  else
46
46
  Kernel.system(
47
- "git push #{environment} HEAD:master --force",
47
+ "git push #{environment} HEAD:#{branch_ref} --force",
48
48
  )
49
49
  end
50
50
  end
51
51
 
52
+ def branch_ref
53
+ main_ref_exists = system("git show-ref --verify --quiet refs/heads/main")
54
+ master_ref_exists = system(
55
+ "git show-ref --verify --quiet refs/heads/master",
56
+ )
57
+
58
+ if main_ref_exists && !master_ref_exists
59
+ "main"
60
+ else
61
+ "master"
62
+ end
63
+ end
64
+
52
65
  def restore
53
66
  if production? && !forced?
54
67
  $stdout.puts "Parity does not support restoring backups into your "\
@@ -57,6 +70,7 @@ module Parity
57
70
  Backup.new(
58
71
  from: arguments.first,
59
72
  to: environment,
73
+ parallelize: parallelize?,
60
74
  additional_args: additional_restore_arguments,
61
75
  ).restore
62
76
  end
@@ -72,10 +86,13 @@ module Parity
72
86
  arguments.include?("--force")
73
87
  end
74
88
 
89
+ def parallelize?
90
+ arguments.include?("--parallelize")
91
+ end
92
+
75
93
  def additional_restore_arguments
76
- (arguments.drop(1) - ["--force"] + [restore_confirmation_argument]).
77
- compact.
78
- join(" ")
94
+ (arguments.drop(1) - ["--force", "--parallelize"] +
95
+ [restore_confirmation_argument]).compact.join(" ")
79
96
  end
80
97
 
81
98
  def restore_confirmation_argument
@@ -89,7 +106,11 @@ module Parity
89
106
  end
90
107
 
91
108
  def console
92
- Kernel.system(command_for_remote("run rails console"))
109
+ Kernel.system(
110
+ command_for_remote(
111
+ "run bundle exec rails console #{arguments.join(' ')}",
112
+ ),
113
+ )
93
114
  end
94
115
 
95
116
  def migrate
@@ -1,3 +1,3 @@
1
1
  module Parity
2
- VERSION = "3.0.1.beta".freeze
2
+ VERSION = "3.4.0".freeze
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parity
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1.beta
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Croak
8
8
  - Geoff Harcourt
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-10-24 00:00:00.000000000 Z
12
+ date: 2021-06-10 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: |2
15
15
  Development/staging/production parity makes it easier for
@@ -39,7 +39,7 @@ homepage: https://github.com/thoughtbot/parity
39
39
  licenses:
40
40
  - MIT
41
41
  metadata: {}
42
- post_install_message:
42
+ post_install_message:
43
43
  rdoc_options: []
44
44
  require_paths:
45
45
  - lib
@@ -50,13 +50,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
50
  version: 2.2.0
51
51
  required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: 1.3.1
55
+ version: '0'
56
56
  requirements: []
57
- rubyforge_project:
58
- rubygems_version: 2.7.6
59
- signing_key:
57
+ rubygems_version: 3.1.6
58
+ signing_key:
60
59
  specification_version: 4
61
60
  summary: Shell commands for development, staging, and production parity.
62
61
  test_files: []