cloudfoundry_blue_green_deploy 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 54397c469bcc873ba16da8358aaf7659e5e0a7cd
4
- data.tar.gz: 9f27071ae08a3dda2347f6371dddb242a6d8405e
3
+ metadata.gz: 2129061dc5383e80ad6d6cb88dddddf71f7d956f
4
+ data.tar.gz: 758e8c64b46156e56ba1d3ceda7a76ba1130c595
5
5
  SHA512:
6
- metadata.gz: 924f6dfc9bf0c9e813629c0c5adccd0e6671be57c9d9c7c068c1074b8ecb4751b6348227c064e3b1b344f1fc1c97a9f1c3be38082dfbab9182210a9fa68d9c6d
7
- data.tar.gz: e90a718e563b61cc450bc0c486c561812e26f09f5a84082a00e417bc4b145e29dc282072fac517d393dfbf1ccd31d5e4b6d3a3b79b3aa18b563926ed1a5d28bd
6
+ metadata.gz: c694025ce07bea6181b9858b88ccb30202187bb5cb423cebd270aa5cddd824d523651da38d53e5661481c9708133b540c6a2ee1d185d9672b4c553cb2280d627
7
+ data.tar.gz: cdfa76bc1dad1e760d3016177c0fcba9c5b203b5383a95cd933b5ac59e7d77a818c8dfc8aaddf258fa928dcbc3d7103f994abd334079e0e45f7e4f50596f8342
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.2
data/README.md CHANGED
@@ -1,184 +1,177 @@
1
1
  # Overview
2
2
 
3
- Using a simple deployment process, one can introduce significant (even if planned) downtime of your application.
3
+ Using a simple deployment process, downtime can occur. By running two identical production environments (Blue and Green), the risk of significant downtime is minimized. If you want to automate this process and minimize errors, use the Blue/Green deployment approach: http://docs.gopivotal.com/pivotalcf/devguide/deploy-apps/blue-green.html
4
4
 
5
- If you want to minimize this impact to your site's availability, you might opt to use the Blue/Green deployment approach: http://docs.gopivotal.com/pivotalcf/devguide/deploy-apps/blue-green.html
6
-
7
- This gem provides a Rake task to automate Blue/Green deployment to a Cloud Foundry installation.
5
+ This gem provides a Rake task to automate Blue/Green deployment to a Cloud Foundry installation. For deployments that include migrations, there is an option to deploy a Rack-based shutter app.
8
6
 
9
7
 
10
8
  ## Installation
11
9
 
10
+ Currently, this gem requires Ruby 2.1.x or better. It is compatible with [Cloud Foundy CLI](https://github.com/cloudfoundry/cli) versions 6.6 - 6.11.
11
+
12
12
  Add this line to your application's Gemfile:
13
13
 
14
14
  gem 'cloudfoundry_blue_green_deploy'
15
15
 
16
16
  And then execute:
17
17
 
18
- $ bundle
18
+ $ bundle install
19
19
 
20
- Or install it yourself as:
20
+ Or download and install:
21
21
 
22
22
  $ gem install cloudfoundry_blue_green_deploy
23
23
 
24
- ## For first deployment - where app to deploy needs to be specified
24
+ ## First Deployment
25
+ Make sure that all services that are specified in the manifest.yml file are created before running a first deployment.
25
26
 
26
27
  ## Usage
27
28
 
28
- 1. define the blue and green instances of your application(s) in your Cloud Foundry Manifest. (see rules in the next section)
29
- 2. run
29
+ 1. Define the Blue and Green instances of your application(s) in your Cloud Foundry Manifest. (see rules in the next section)
30
+
31
+ 2. Run:
30
32
 
31
- $ bundle exec rake cf:blue_green_deploy[web-app-name]
33
+ $ bundle exec rake cf:blue_green_deploy[web-app-name]
32
34
 
33
35
  Where "web-app-name" is the "name" attribute in your manifest.yml.
34
36
  The default color for first deployment is blue.
35
- You may optionally specify the color that you would like to be the "live" instance on the first deployment.
36
37
 
37
38
  ### manifest.yml
38
39
 
39
40
  Your Cloud Foundry manifest file must comply with the following requirements:
40
41
 
41
- 1. name: two application instances are required. One name ending with "-green" and another ending with "-blue"
42
- 2. host: the url. One ending with "-green" and the other ending with "-blue"
43
- 3. domain: required
44
- 4. command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
45
- 5. services: Optional, only required if there are services that need to be bound
42
+ - `name`: two application instances are required. One name ending with `-green` and another ending with `-blue`
43
+ - `host`: the url. One ending with `-green` and the other ending with `-blue`
44
+ - `domain`: required
45
+ - `memory`: optional, default will be used if omitted
46
+ - `command`: `bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV`
47
+ - `services`: Optional, only required if there are services that need to be bound
46
48
 
47
49
  #### Bare Minimum Example:
48
50
 
49
51
  In this example:
50
- - Our web application is known to Cloud Foundry as "carrot-soup".
51
- - "carrot-soup" has a database service known as "oyster-cracker".
52
+ Our web application is known to Cloud Foundry as `awesome-app` with a database service known as `memory-bank-db`. Its URL is `awesomeapp.cfapps.io`.
52
53
 
53
54
  ---
54
55
  applications:
55
-
56
- - name: carrot-soup-green
57
- host: la-pong-green
56
+ - name: awesome-app-blue
57
+ host: awesomeapp-blue
58
58
  domain: cfapps.io
59
59
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
60
60
  services:
61
- - oyster-cracker
61
+ - memory-bank-db
62
62
 
63
- - name: carrot-soup-blue
64
- host: la-pong-blue
63
+ - name: awesome-app-green
64
+ host: awesomeapp-green
65
65
  domain: cfapps.io
66
66
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
67
67
  services:
68
- - oyster-cracker
68
+ - memory-bank-db
69
69
 
70
70
  And perform a blue/green deploy like this:
71
71
 
72
- $ bundle exec rake cf:blue_green_deploy[carrot-soup]
72
+ $ bundle exec rake cf:blue_green_deploy[awesome-app]
73
73
 
74
74
  ## Workers
75
75
 
76
76
  Non-trivial applications often require background processes to perform asynchronous jobs (e.g. sending email, importing data from external systems, etc.).
77
- If these applications' code are to stay in sync with the web application, they need blue/green treatment as well.
77
+ If these applications' code are to stay in sync with the web application, they need Blue and Green treatment as well.
78
78
 
79
79
  This Rake task natively supports worker application instances.
80
80
 
81
81
  ### Usage (with Workers)
82
82
 
83
- 1. define the blue and green instances of your application(s) and workers in your Cloud Foundry Manifest. (see rules in the next section)
84
- 2. run:
83
+ 1. Define the Blue and Green instances of your application and workers in your Cloud Foundry Manifest. (see rules in the next section)
84
+ 2. Run:
85
+
86
+
87
+ $ bundle exec rake cf:blue_green_deploy[web-app-name,worker-name,another-worker-name]
85
88
 
86
- $ bundle exec rake cf:blue_green_deploy[web-app-name,worker-name,another-worker-name]
87
89
 
88
- Note:
89
- The "web-app-name" is the "name" attribute (without a color) detailed in your manifest.yml
90
- The "worker-name" and "another-worker-name" are "name" attributes for 2 separate worker apps as detailed in your manifest.yml
91
- Multiple worker apps can be specified as long as they comply with the blue/green deployment requirements in the manifest.yml
90
+ - The `web-app-name` is the `name` attribute (without a color) detailed in your manifest.yml
91
+ - The `worker-name` and `another-worker-name` are `name` attributes for two separate worker apps as detailed in your manifest.yml
92
+ - Multiple worker apps can be specified as long as they comply with the blue/green deployment requirements in the manifest.yml.
92
93
 
93
94
  ### manifest.yml
94
95
 
95
96
  For web application deployment (see requirements above)
96
97
 
97
- For worker applications
98
- 1. name: two application instances are required. One name ending with "-green" and another ending with "-blue"
99
- 2. command:
100
- 3. path: Relative to the current working directory
101
- 4. services: Optional, only required if there are services that need to be bound
98
+ For worker applications:
99
+ - `name`: Two application instances are required. One name ending with `-green` and another ending with `-blue`
100
+ - `command`: Required
101
+ - `path`: Relative to the current working directory
102
+ - `services`: Optional, only required if there are services that need to be bound
102
103
 
103
104
  #### Example with Workers
104
105
 
105
106
  In this example:
106
- - Our web application is known to Cloud Foundry as "carrot-soup".
107
- - The app "carrot-soup" has a database service known as "oyster-cracker".
108
- - We have a worker application named "relish", whose database is known as "creme-fraiche".
109
-
110
- ---
111
- applications:
112
-
113
- - name: relish-green
114
- command: bundle exec rails s -p $PORT -e $RAILS_ENV
115
- path: ../relish
116
- services:
117
- - creme-fraiche
118
-
119
- - name: carrot-soup-green
120
- host: la-pong-green
121
- domain: cfapps.io
122
- size: 1GB
123
- path: .
124
- command: bundle exec rails s -p $PORT -e $RAILS_ENV
125
- services:
126
- - oyster-cracker
127
-
128
- - name: carrot-soup-blue
129
- host: la-pong-blue
130
- domain: cfapps.io
131
- size: 1GB
132
- path: .
133
- command: bundle exec rails s -p $PORT -e $RAILS_ENV
134
- services:
135
- - oyster-cracker
136
-
137
- - name: relish-blue
138
- command: bundle exec rails s -p $PORT -e $RAILS_ENV
139
- path: ../relish
140
- services:
141
- - creme-fraiche
142
-
143
- And perform the blue/green deploy like this:
144
- $ bundle exec rake cf:blue_green_deploy[carrot-soup,relish]
145
-
107
+ - Our web application is known to Cloud Foundry as `awesome-app`.
108
+ - Its URL is `awesomeapp.cfapps.io`
109
+ - The app `awesome-app` has a database service known as `memory-bank-db`.
110
+ - We have a worker application named `super-queue`, whose database is known as `key-vals-db`.
111
+
112
+ ---
113
+ applications:
114
+ - name: awesome-app-blue
115
+ host: awesomeapp-blue
116
+ domain: cfapps.io
117
+ memory: 1GB
118
+ path: .
119
+ command: bundle exec rails s -p $PORT -e $RAILS_ENV
120
+ services:
121
+ - memory-bank-db
122
+
123
+ - name: awesome-app-green
124
+ host: awesomeapp-green
125
+ domain: cfapps.io
126
+ memory: 1GB
127
+ path: .
128
+ command: bundle exec rails s -p $PORT -e $RAILS_ENV
129
+ services:
130
+ - memory-bank-db
131
+
132
+ - name: super-queue-blue
133
+ command: bundle exec rails s -p $PORT -e $RAILS_ENV
134
+ path: ../super-queue
135
+ services:
136
+ - key-vals-db
137
+
138
+ - name: super-queue-green
139
+ command: bundle exec rails s -p $PORT -e $RAILS_ENV
140
+ path: ../super-queue
141
+ services:
142
+ - key-vals-db
143
+
144
+
145
+ And perform the blue/green deploy like this:
146
+
147
+ $ bundle exec rake cf:blue_green_deploy[awesome-app, super-queue]
146
148
 
147
149
  # Blue/Green with Shutter
148
150
 
149
- For blue/green deployments that require a database migration this tool provides the ability to automatically shutter the app during the required downtime. To use this feature, create a shutter app and configure your manifest.yml.
151
+ For Blue and Green deployments that require a database migration this tool provides the ability to automatically shutter the app during the required downtime. To use this feature, create a shutter app and configure your `manifest.yml`.
150
152
 
151
153
  ## Creating a Minimal Shutter App
152
154
 
153
155
  1. Add the following to your manifest.yml. Note that the name must match the name of your production application and end in -shutter.
154
156
 
155
- - name: carrot-soup-shutter
156
- command: bundle exec rackup config.ru -p $PORT -E $RACK_ENV
157
- path: shutter-app
157
+ - name: awesome-app-shutter
158
+ command: bundle exec rackup config.ru -p $PORT -E $RACK_ENV
159
+ path: shutter-app
158
160
 
159
- 2. Create a directory named "shutter-app". In that directory:
160
- 1. create a Rack config (config.ru):
161
+ 2. Create a directory named `shutter-app`. In that directory:
161
162
 
162
- class Message
163
- def call(env)
164
- [200, {"Content-Type" => "text/plain"}, ["Temporarily down for maintenance. Please check back shortly."]]
165
- end
166
- end
163
+ - Create a Rack config [config.ru](https://gist.github.com/marianaIAm/4d04a20fdb6d05c64bce)
167
164
 
168
- run Message.new
165
+ - Create a minimal Gemfile:
169
166
 
170
- 2. create a minimal Gemfile:
167
+ source 'https://rubygems.org'
168
+ ruby '2.1.2'
171
169
 
172
- source 'https://rubygems.org'
173
- ruby '2.0.0'
170
+ gem 'rack'
174
171
 
175
- gem 'rack'
176
-
177
- 3. create the Gemfile.lock by running Bundler in the "shutter-app" directory:
178
-
179
- $ bundle install
172
+ - Create the Gemfile.lock by running Bundler in the `shutter-app` directory:
180
173
 
174
+ $ bundle install
181
175
 
182
- - Note: as of 05/09/14 deployment using Cloud Foundry's buildpack does not appear to be compatible with ruby version 2.1.0.
183
- - Our fail-fast philosophy. We recommend understanding deployment on Cloud Foundry before using this tool.
184
176
 
177
+ Our fail-fast philosophy. We recommend understanding deployment on Cloud Foundry before using this tool.
@@ -7,16 +7,17 @@ Gem::Specification.new do |spec|
7
7
  spec.name = 'cloudfoundry_blue_green_deploy'
8
8
  spec.version = CloudfoundryBlueGreenDeploy::VERSION
9
9
  spec.authors = ['John Ryan and Mariana Lenetis']
10
- spec.email = ['jryan@pivotallabs.com', 'mlenetis@pivotallabs.com']
10
+ spec.email = ['jryan@pivotal.io', 'mlenetis@pivotal.io']
11
11
  spec.summary = %q{Blue-green deployment tool for Cloud Foundry.}
12
12
  spec.description = %q{Blue-green deployment tool for Cloud Foundry. Please see readme.}
13
- spec.homepage = ''
13
+ spec.homepage = 'https://github.com/marianaIAm/cloudfoundry_blue_green_deploy'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
+ spec.required_ruby_version = '~> 2.1'
20
21
 
21
22
  spec.add_development_dependency 'bundler', '~> 1.6'
22
23
  spec.add_development_dependency 'rake'
@@ -49,13 +49,16 @@ module CloudfoundryBlueGreenDeploy
49
49
  found_header = false
50
50
  lines.each do |line|
51
51
  line = line.split
52
- if line[0] == 'host' && found_header == false
52
+ if !found_header && line.include?('host') && line.include?('domain') && line.include?('apps')
53
53
  found_header = true
54
+ @host_index = line.find_index('host')
55
+ @domain_index = line.find_index('domain')
56
+ @apps_index = line.find_index('apps')
54
57
  next
55
58
  end
56
59
 
57
60
  if found_header
58
- routes << Route.new(line[0], line[1], line[2])
61
+ routes << Route.new(line[@host_index], line[@domain_index], line[@apps_index])
59
62
  end
60
63
  end
61
64
  routes
@@ -1,3 +1,3 @@
1
1
  module CloudfoundryBlueGreenDeploy
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -15,9 +15,11 @@ module CloudfoundryBlueGreenDeploy
15
15
  before do
16
16
  allow(CommandLine).to receive(:system).and_return(false)
17
17
  end
18
+
18
19
  it 'throws a CloudfoundryCliError' do
19
20
  expect{ subject }.to raise_error(CloudfoundryCliError)
20
21
  end
22
+
21
23
  end
22
24
  end
23
25
 
@@ -34,9 +36,11 @@ module CloudfoundryBlueGreenDeploy
34
36
  before do
35
37
  allow(CommandLine).to receive(:system).and_return(false)
36
38
  end
39
+
37
40
  it 'throws a CloudfoundryCliError' do
38
41
  expect{ subject }.to raise_error(CloudfoundryCliError)
39
42
  end
43
+
40
44
  end
41
45
  end
42
46
 
@@ -67,8 +71,8 @@ module CloudfoundryBlueGreenDeploy
67
71
  expect(subject[1].name).to eq 'carrot-soup-green'
68
72
  expect(subject[1].state).to eq 'started'
69
73
  end
70
- end
71
74
 
75
+ end
72
76
  end
73
77
 
74
78
  describe '#routes' do
@@ -78,27 +82,49 @@ module CloudfoundryBlueGreenDeploy
78
82
  end
79
83
 
80
84
  context 'there is a route defined in the current organization' do
81
- let(:cli_routes_output) {
82
- <<-CLI
85
+ context 'the cf routes output does not include the space (cli version < 6.11)' do
86
+ let(:cli_routes_output) {
87
+ <<-CLI
83
88
  Getting routes as pivot-pong-developers@googlegroups.com ...
84
89
 
85
90
  host domain apps
86
91
  pivot-pong-blue cfapps.io pivot-pong-staging-blue
87
92
  pivot-pong-green cfapps.io pivot-pong-staging-green
88
93
  la-pong cfapps.io pivot-pong-staging-green
89
- CLI
90
- }
94
+ CLI
95
+ }
91
96
 
97
+ it 'parses the CLI "routes" output into a collection of Route objects, one for each route' do
98
+ expect(subject).to be_kind_of(Array)
99
+ expect(subject.length).to eq 3
100
+ expect(subject[0].host).to eq 'pivot-pong-blue'
101
+ expect(subject[0].domain).to eq 'cfapps.io'
102
+ expect(subject[0].app).to eq 'pivot-pong-staging-blue'
103
+ end
92
104
 
93
- it 'parses the CLI "routes" output into a collection of Route objects, one for each route' do
94
- expect(subject).to be_kind_of(Array)
95
- expect(subject.length).to eq 3
96
- expect(subject[0].host).to eq 'pivot-pong-blue'
97
- expect(subject[0].domain).to eq 'cfapps.io'
98
- expect(subject[0].app).to eq 'pivot-pong-staging-blue'
99
105
  end
100
- end
106
+ context 'the cf routes output order is changed' do
107
+ let(:cli_routes_output) {
108
+ <<-CLI
109
+ Getting routes as pivot-pong-developers@googlegroups.com ...
110
+
111
+ space host domain apps
112
+ production pivot-pong-blue cfapps.io pivot-pong-production-blue
113
+ production pivot-pong-green cfapps.io pivot-pong-production-green
114
+ production la-pong cfapps.io pivot-pong-production-green
115
+ CLI
116
+ }
117
+
118
+ it 'parses the CLI "routes" output into a collection of Route objects, one for each route' do
119
+ expect(subject).to be_kind_of(Array)
120
+ expect(subject.length).to eq 3
121
+ expect(subject[0].host).to eq 'pivot-pong-blue'
122
+ expect(subject[0].domain).to eq 'cfapps.io'
123
+ expect(subject[0].app).to eq 'pivot-pong-production-blue'
124
+ end
101
125
 
126
+ end
127
+ end
102
128
  context '"cf routes" fails with an error' do
103
129
  let(:cli_routes_output) {
104
130
  <<-CLI
@@ -108,9 +134,11 @@ module CloudfoundryBlueGreenDeploy
108
134
  Failed fetching routes.
109
135
  CLI
110
136
  }
137
+
111
138
  it 'throws a CloudfoundryCliError' do
112
139
  expect{ subject }.to raise_error(CloudfoundryCliError)
113
140
  end
141
+
114
142
  end
115
143
  end
116
144
 
@@ -130,9 +158,11 @@ module CloudfoundryBlueGreenDeploy
130
158
  before do
131
159
  allow(CommandLine).to receive(:system).and_return(false)
132
160
  end
161
+
133
162
  it 'throws a CloudfoundryCliError' do
134
163
  expect{ subject }.to raise_error(CloudfoundryCliError)
135
164
  end
165
+
136
166
  end
137
167
  end
138
168
 
@@ -152,9 +182,11 @@ module CloudfoundryBlueGreenDeploy
152
182
  before do
153
183
  allow(CommandLine).to receive(:system).and_return(false)
154
184
  end
185
+
155
186
  it 'throws a CloudfoundryCliError' do
156
187
  expect{ subject }.to raise_error(CloudfoundryCliError)
157
188
  end
189
+
158
190
  end
159
191
  end
160
192
  end
data/spec/manifest.yml CHANGED
@@ -3,14 +3,14 @@ applications:
3
3
 
4
4
  - name: the-web-app-worker-green
5
5
  host: the-web-app-worker-green
6
- size: 1GB
6
+ memory: 1GB
7
7
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
8
8
  services:
9
9
  - creme-fraiche
10
10
 
11
11
  - name: hard-worker-green
12
12
  host: hard-worker-green
13
- size: 1GB
13
+ memory: 1GB
14
14
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
15
15
  services:
16
16
  - creme-fraiche
@@ -18,7 +18,7 @@ applications:
18
18
  - name: the-web-app-green
19
19
  host: the-web-url-green
20
20
  domain: cfapps.io
21
- size: 1GB
21
+ memory: 1GB
22
22
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
23
23
  services:
24
24
  - oyster-cracker
@@ -26,21 +26,21 @@ applications:
26
26
  - name: the-web-app-blue
27
27
  host: the-web-url-blue
28
28
  domain: cfapps.io
29
- size: 1GB
29
+ memory: 1GB
30
30
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
31
31
  services:
32
32
  - oyster-cracker
33
33
 
34
34
  - name: the-web-app-worker-blue
35
35
  host: the-web-app-worker-blue
36
- size: 1GB
36
+ memory: 1GB
37
37
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
38
38
  services:
39
39
  - creme-fraiche
40
40
 
41
41
  - name: hard-worker-blue
42
42
  host: hard-worker-blue
43
- size: 1GB
43
+ memory: 1GB
44
44
  command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
45
45
  services:
46
46
  - creme-fraiche
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudfoundry_blue_green_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Ryan and Mariana Lenetis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-09 00:00:00.000000000 Z
11
+ date: 2015-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,13 +68,14 @@ dependencies:
68
68
  version: '0'
69
69
  description: Blue-green deployment tool for Cloud Foundry. Please see readme.
70
70
  email:
71
- - jryan@pivotallabs.com
72
- - mlenetis@pivotallabs.com
71
+ - jryan@pivotal.io
72
+ - mlenetis@pivotal.io
73
73
  executables: []
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
77
  - ".gitignore"
78
+ - ".ruby-version"
78
79
  - Gemfile
79
80
  - LICENSE.txt
80
81
  - README.md
@@ -99,7 +100,7 @@ files:
99
100
  - spec/manifest.yml
100
101
  - spec/route_spec.rb
101
102
  - spec/spec_helper.rb
102
- homepage: ''
103
+ homepage: https://github.com/marianaIAm/cloudfoundry_blue_green_deploy
103
104
  licenses:
104
105
  - MIT
105
106
  metadata: {}
@@ -109,9 +110,9 @@ require_paths:
109
110
  - lib
110
111
  required_ruby_version: !ruby/object:Gem::Requirement
111
112
  requirements:
112
- - - ">="
113
+ - - "~>"
113
114
  - !ruby/object:Gem::Version
114
- version: '0'
115
+ version: '2.1'
115
116
  required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  requirements:
117
118
  - - ">="
@@ -119,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
120
  version: '0'
120
121
  requirements: []
121
122
  rubyforge_project:
122
- rubygems_version: 2.2.0
123
+ rubygems_version: 2.2.2
123
124
  signing_key:
124
125
  specification_version: 4
125
126
  summary: Blue-green deployment tool for Cloud Foundry.