heroku_rails_deploy 0.3.0 → 0.4.0.rc0
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/CHANGELOG.md +3 -0
- data/heroku_rails_deploy.gemspec +1 -0
- data/lib/heroku_rails_deploy/deployer.rb +45 -35
- data/lib/heroku_rails_deploy/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 011e522544ae6747ba888aa135ecf61bc5f41ca8
|
4
|
+
data.tar.gz: 2d8c4d7942848b6a842ef675cfa2861b35fd8e9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8845289a2ff2d63b0813993d008f8c1e9954618fe7100e4a628d97d369457e7d132cce7f13f9016e332ff0e321bd6cd069f87066963fb80cc4bd2d7f708b2078
|
7
|
+
data.tar.gz: 4017936ca0d8eefab9823959880c9268cfcfb5c2facd2ad56b22900ac0de849ff62c88149fdd4ad969a53cad3fa0e8c111d9af7f119b97f7299cfb68b134a55e
|
data/CHANGELOG.md
CHANGED
data/heroku_rails_deploy.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
22
|
spec.add_runtime_dependency 'rails'
|
23
|
+
spec.add_runtime_dependency 'private_attr'
|
23
24
|
|
24
25
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
25
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
@@ -2,13 +2,17 @@ require 'optparse'
|
|
2
2
|
require 'shellwords'
|
3
3
|
require 'yaml'
|
4
4
|
require 'english'
|
5
|
+
require 'private_attr'
|
5
6
|
|
6
7
|
module HerokuRailsDeploy
|
7
8
|
class Deployer
|
9
|
+
extend PrivateAttr
|
10
|
+
|
8
11
|
PRODUCTION_BRANCH_REGEX = /\A((master)|(release\/.+)|(hotfix\/.+))\z/
|
9
12
|
PRODUCTION = 'production'.freeze
|
10
13
|
|
11
14
|
attr_reader :config_file, :args
|
15
|
+
private_attr_reader :options, :app_registry
|
12
16
|
|
13
17
|
class Options < Struct.new(:environment, :revision, :register_avro_schemas, :skip_avro_schemas)
|
14
18
|
def self.create_default(app_registry)
|
@@ -17,43 +21,15 @@ module HerokuRailsDeploy
|
|
17
21
|
end
|
18
22
|
|
19
23
|
def initialize(config_file, args)
|
24
|
+
raise "Missing config file #{config_file}" unless File.file?(config_file)
|
25
|
+
@app_registry = YAML.load(File.read(config_file))
|
20
26
|
@config_file = config_file
|
21
27
|
@args = args
|
28
|
+
@options = parse_options
|
22
29
|
end
|
23
30
|
|
24
31
|
def run
|
25
|
-
|
26
|
-
app_registry = YAML.load(File.read(config_file))
|
27
|
-
|
28
|
-
options = Options.create_default(app_registry)
|
29
|
-
OptionParser.new do |parser|
|
30
|
-
parser.on_tail('-h', '--help', 'Show this message') do
|
31
|
-
puts parser
|
32
|
-
# rubocop:disable Lint/NonLocalExitFromIterator
|
33
|
-
return
|
34
|
-
# rubocop:enable Lint/NonLocalExitFromIterator
|
35
|
-
end
|
36
|
-
|
37
|
-
parser.on('-e', '--environment ENVIRONMENT',
|
38
|
-
"The environment to deploy to. Must be in #{app_registry.keys.join(', ')} (default #{app_registry.keys.first})") do |environment|
|
39
|
-
options.environment = environment
|
40
|
-
end
|
41
|
-
|
42
|
-
parser.on('-r', '--revision REVISION',
|
43
|
-
'The git revision to push. (default HEAD)') do |revision|
|
44
|
-
options.revision = revision
|
45
|
-
end
|
46
|
-
|
47
|
-
parser.on('--register-avro-schemas',
|
48
|
-
'Force the registration of Avro schemas when deploying to a non-production environment.') do |register_avro_schemas|
|
49
|
-
options.register_avro_schemas = register_avro_schemas
|
50
|
-
end
|
51
|
-
|
52
|
-
parser.on('--skip-avro-schemas',
|
53
|
-
'Skip the registration of Avro schemas when deploying to production.') do |skip_avro_schemas|
|
54
|
-
options.skip_avro_schemas = skip_avro_schemas
|
55
|
-
end
|
56
|
-
end.parse!(args)
|
32
|
+
return unless options
|
57
33
|
|
58
34
|
app_name = app_registry.fetch(options.environment) do
|
59
35
|
raise OptionParser::InvalidArgument.new("Invalid environment '#{options.environment}'. " \
|
@@ -66,7 +42,7 @@ module HerokuRailsDeploy
|
|
66
42
|
|
67
43
|
puts "Deploying to Heroku app #{app_name} for environment #{options.environment}"
|
68
44
|
|
69
|
-
if !options.skip_avro_schemas && (production?
|
45
|
+
if !options.skip_avro_schemas && (production? || options.register_avro_schemas)
|
70
46
|
puts 'Checking for pending Avro schemas'
|
71
47
|
pending_schemas = list_pending_schemas(app_name)
|
72
48
|
if pending_schemas.any?
|
@@ -91,10 +67,44 @@ module HerokuRailsDeploy
|
|
91
67
|
end
|
92
68
|
end
|
93
69
|
|
70
|
+
def production?
|
71
|
+
options.try(:environment) == PRODUCTION
|
72
|
+
end
|
73
|
+
|
94
74
|
private
|
95
75
|
|
96
|
-
def
|
97
|
-
options
|
76
|
+
def parse_options
|
77
|
+
options = Options.create_default(app_registry)
|
78
|
+
OptionParser.new do |parser|
|
79
|
+
parser.on_tail('-h', '--help', 'Show this message') do
|
80
|
+
puts parser
|
81
|
+
# rubocop:disable Lint/NonLocalExitFromIterator
|
82
|
+
return
|
83
|
+
# rubocop:enable Lint/NonLocalExitFromIterator
|
84
|
+
end
|
85
|
+
|
86
|
+
parser.on('-e', '--environment ENVIRONMENT',
|
87
|
+
"The environment to deploy to. Must be in #{app_registry.keys.join(', ')} (default #{app_registry.keys.first})") do |environment|
|
88
|
+
options.environment = environment
|
89
|
+
end
|
90
|
+
|
91
|
+
parser.on('-r', '--revision REVISION',
|
92
|
+
'The git revision to push. (default HEAD)') do |revision|
|
93
|
+
options.revision = revision
|
94
|
+
end
|
95
|
+
|
96
|
+
parser.on('--register-avro-schemas',
|
97
|
+
'Force the registration of Avro schemas when deploying to a non-production environment.') do |register_avro_schemas|
|
98
|
+
options.register_avro_schemas = register_avro_schemas
|
99
|
+
end
|
100
|
+
|
101
|
+
parser.on('--skip-avro-schemas',
|
102
|
+
'Skip the registration of Avro schemas when deploying to production.') do |skip_avro_schemas|
|
103
|
+
options.skip_avro_schemas = skip_avro_schemas
|
104
|
+
end
|
105
|
+
end.parse!(args)
|
106
|
+
|
107
|
+
options
|
98
108
|
end
|
99
109
|
|
100
110
|
def production_branch?(revision)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroku_rails_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.rc0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Salsify, Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: private_attr
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,9 +165,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
165
|
version: '0'
|
152
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
167
|
requirements:
|
154
|
-
- - "
|
168
|
+
- - ">"
|
155
169
|
- !ruby/object:Gem::Version
|
156
|
-
version:
|
170
|
+
version: 1.3.1
|
157
171
|
requirements: []
|
158
172
|
rubyforge_project:
|
159
173
|
rubygems_version: 2.6.11
|