simple_deploy 0.7.3 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +3 -1
- data/lib/simple_deploy/aws/cloud_formation.rb +7 -7
- data/lib/simple_deploy/cli/update.rb +8 -1
- data/lib/simple_deploy/stack/stack_updater.rb +6 -6
- data/lib/simple_deploy/stack.rb +4 -5
- data/lib/simple_deploy/version.rb +1 -1
- data/spec/cli/clone_spec.rb +1 -1
- data/spec/cli/update_spec.rb +28 -15
- data/spec/stack/stack_updater_spec.rb +43 -15
- data/spec/stack_spec.rb +2 -4
- metadata +33 -77
data/CHANGELOG.md
CHANGED
@@ -18,7 +18,7 @@ module SimpleDeploy
|
|
18
18
|
'TemplateBody' => args[:template] }.merge parameters
|
19
19
|
@connect.create_stack(args[:name], data)
|
20
20
|
@logger.info "Cloud Formation stack creation completed."
|
21
|
-
rescue Exception => e
|
21
|
+
rescue Exception => e
|
22
22
|
Error.new(:exception => e).process
|
23
23
|
end
|
24
24
|
|
@@ -28,32 +28,32 @@ module SimpleDeploy
|
|
28
28
|
'TemplateBody' => args[:template] }.merge parameters
|
29
29
|
@connect.update_stack(args[:name], data)
|
30
30
|
@logger.info "Cloud Formation stack update completed."
|
31
|
-
rescue Exception => e
|
31
|
+
rescue Exception => e
|
32
32
|
Error.new(:exception => e).process
|
33
33
|
end
|
34
34
|
|
35
35
|
def destroy(name)
|
36
36
|
@connect.delete_stack name
|
37
37
|
@logger.info "Cloud Formation stack destroy completed."
|
38
|
-
rescue Exception => e
|
38
|
+
rescue Exception => e
|
39
39
|
Error.new(:exception => e).process
|
40
40
|
end
|
41
41
|
|
42
42
|
def describe_stack(name)
|
43
43
|
@connect.describe_stacks('StackName' => name).body['Stacks']
|
44
|
-
rescue Exception => e
|
44
|
+
rescue Exception => e
|
45
45
|
Error.new(:exception => e).process
|
46
46
|
end
|
47
47
|
|
48
48
|
def stack_resources(name)
|
49
49
|
@connect.describe_stack_resources('StackName' => name).body['StackResources']
|
50
|
-
rescue Exception => e
|
50
|
+
rescue Exception => e
|
51
51
|
Error.new(:exception => e).process
|
52
52
|
end
|
53
53
|
|
54
54
|
def stack_events(name, limit)
|
55
55
|
@connect.describe_stack_events(name).body['StackEvents'] [0..limit-1]
|
56
|
-
rescue Exception => e
|
56
|
+
rescue Exception => e
|
57
57
|
Error.new(:exception => e).process
|
58
58
|
end
|
59
59
|
|
@@ -67,7 +67,7 @@ module SimpleDeploy
|
|
67
67
|
|
68
68
|
def template(name)
|
69
69
|
@connect.get_template(name).body['TemplateBody']
|
70
|
-
rescue Exception => e
|
70
|
+
rescue Exception => e
|
71
71
|
Error.new(:exception => e).process
|
72
72
|
end
|
73
73
|
|
@@ -25,6 +25,7 @@ EOS
|
|
25
25
|
:default => 'info'
|
26
26
|
opt :name, "Stack name(s) of stack to deploy", :type => :string,
|
27
27
|
:multi => true
|
28
|
+
opt :template, "Path to a new template file", :type => :string
|
28
29
|
end
|
29
30
|
|
30
31
|
valid_options? :provided => @opts,
|
@@ -39,8 +40,14 @@ EOS
|
|
39
40
|
stack = Stack.new :name => name,
|
40
41
|
:environment => @opts[:environment]
|
41
42
|
|
43
|
+
if @opts[:template]
|
44
|
+
template_body = IO.read @opts[:template]
|
45
|
+
end
|
46
|
+
|
42
47
|
rescue_exceptions_and_exit do
|
43
|
-
stack.update :force => @opts[:force],
|
48
|
+
stack.update :force => @opts[:force],
|
49
|
+
:template_body => template_body,
|
50
|
+
:attributes => attributes
|
44
51
|
end
|
45
52
|
end
|
46
53
|
end
|
@@ -11,12 +11,12 @@ module SimpleDeploy
|
|
11
11
|
@template_body = args[:template_body]
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
if parameter_updated?(attributes)
|
16
|
-
@logger.debug
|
14
|
+
def update_stack(attributes)
|
15
|
+
if parameter_updated?(attributes) || @template_body
|
16
|
+
@logger.debug 'Updated parameters or new template found.'
|
17
17
|
update
|
18
18
|
else
|
19
|
-
@logger.debug
|
19
|
+
@logger.debug 'No parameters require updating and no new template found.'
|
20
20
|
false
|
21
21
|
end
|
22
22
|
end
|
@@ -26,9 +26,9 @@ module SimpleDeploy
|
|
26
26
|
def update
|
27
27
|
if status.wait_for_stable
|
28
28
|
@logger.info "Updating Cloud Formation stack #{@name}."
|
29
|
-
cloud_formation.update :name
|
29
|
+
cloud_formation.update :name => @name,
|
30
30
|
:parameters => read_parameters_from_entry_attributes,
|
31
|
-
:template
|
31
|
+
:template => @template_body
|
32
32
|
else
|
33
33
|
raise "#{@name} did not reach a stable state."
|
34
34
|
end
|
data/lib/simple_deploy/stack.rb
CHANGED
@@ -30,7 +30,7 @@ module SimpleDeploy
|
|
30
30
|
|
31
31
|
@entry.set_attributes attributes
|
32
32
|
stack_creator.create
|
33
|
-
|
33
|
+
|
34
34
|
@entry.save
|
35
35
|
end
|
36
36
|
|
@@ -47,10 +47,10 @@ module SimpleDeploy
|
|
47
47
|
if deployment.clear_for_deployment?
|
48
48
|
@logger.info "Updating #{@name}."
|
49
49
|
attributes = stack_attribute_formatter.updated_attributes args[:attributes]
|
50
|
-
@template_body = template
|
50
|
+
@template_body = args[:template_body] || template
|
51
51
|
|
52
52
|
@entry.set_attributes attributes
|
53
|
-
stack_updater.
|
53
|
+
stack_updater.update_stack attributes
|
54
54
|
@logger.info "Update complete for #{@name}."
|
55
55
|
|
56
56
|
@entry.save
|
@@ -65,10 +65,9 @@ module SimpleDeploy
|
|
65
65
|
if args[:caller].kind_of? Stack::Deployment::Status
|
66
66
|
@logger.info "Updating #{@name}."
|
67
67
|
attributes = stack_attribute_formatter.updated_attributes args[:attributes]
|
68
|
-
@template_body = template
|
69
68
|
|
70
69
|
@entry.set_attributes attributes
|
71
|
-
stack_updater.
|
70
|
+
stack_updater.update_stack attributes
|
72
71
|
@logger.info "Update complete for #{@name}."
|
73
72
|
|
74
73
|
@entry.save
|
data/spec/cli/clone_spec.rb
CHANGED
@@ -170,7 +170,7 @@ describe SimpleDeploy::CLI::Clone do
|
|
170
170
|
|
171
171
|
subject.should_receive(:valid_options?).
|
172
172
|
with(:provided => @options,
|
173
|
-
|
173
|
+
:required => [:environment, :source_name, :new_name])
|
174
174
|
Trollop.stub(:options).and_return(@options)
|
175
175
|
|
176
176
|
@new_stack_mock.should_receive(:create) do |options|
|
data/spec/cli/update_spec.rb
CHANGED
@@ -10,20 +10,22 @@ describe SimpleDeploy::CLI::Update do
|
|
10
10
|
describe 'update' do
|
11
11
|
before do
|
12
12
|
@stack_mock1.stub(:attributes).and_return({})
|
13
|
+
@template_body = "{ \"fake_json\" : \"goodness\"}"
|
14
|
+
|
15
|
+
@options = { :environment => 'my_env',
|
16
|
+
:log_level => 'debug',
|
17
|
+
:name => ['my_stack1'],
|
18
|
+
:force => true,
|
19
|
+
:attributes => ['chef_repo_bucket_prefix=intu-lc'] }
|
20
|
+
|
13
21
|
end
|
14
22
|
|
15
23
|
it "should pass force true" do
|
16
|
-
options = { :environment => 'my_env',
|
17
|
-
:log_level => 'debug',
|
18
|
-
:name => ['my_stack1'],
|
19
|
-
:force => true,
|
20
|
-
:attributes => ['chef_repo_bucket_prefix=intu-lc'] }
|
21
|
-
|
22
24
|
subject.should_receive(:valid_options?).
|
23
|
-
with(:provided => options,
|
25
|
+
with(:provided => @options,
|
24
26
|
:required => [:environment, :name])
|
25
27
|
|
26
|
-
Trollop.stub(:options).and_return(options)
|
28
|
+
Trollop.stub(:options).and_return(@options)
|
27
29
|
|
28
30
|
@stack_mock1.should_receive(:update).with(hash_including(:force => true))
|
29
31
|
|
@@ -31,21 +33,32 @@ describe SimpleDeploy::CLI::Update do
|
|
31
33
|
end
|
32
34
|
|
33
35
|
it "should pass force false" do
|
34
|
-
options =
|
35
|
-
:log_level => 'debug',
|
36
|
-
:name => ['my_stack1'],
|
37
|
-
:force => false,
|
38
|
-
:attributes => ['chef_repo_bucket_prefix=intu-lc'] }
|
36
|
+
@options[:force] = false
|
39
37
|
|
40
38
|
subject.should_receive(:valid_options?).
|
41
|
-
with(:provided => options,
|
39
|
+
with(:provided => @options,
|
42
40
|
:required => [:environment, :name])
|
43
41
|
|
44
|
-
Trollop.stub(:options).and_return(options)
|
42
|
+
Trollop.stub(:options).and_return(@options)
|
45
43
|
|
46
44
|
@stack_mock1.should_receive(:update).with(hash_including(:force => false))
|
47
45
|
|
48
46
|
subject.update
|
49
47
|
end
|
48
|
+
|
49
|
+
it "should update the template if a new template is provided" do
|
50
|
+
@options[:template] = 'brand_new_template.json'
|
51
|
+
|
52
|
+
subject.should_receive(:valid_options?).
|
53
|
+
with(:provided => @options,
|
54
|
+
:required => [:environment, :name])
|
55
|
+
|
56
|
+
Trollop.stub(:options).and_return(@options)
|
57
|
+
|
58
|
+
IO.should_receive(:read).with('brand_new_template.json').and_return(@template_body)
|
59
|
+
|
60
|
+
@stack_mock1.should_receive(:update).with(hash_including(:template_body => @template_body))
|
61
|
+
subject.update
|
62
|
+
end
|
50
63
|
end
|
51
64
|
end
|
@@ -18,6 +18,23 @@ describe SimpleDeploy::StackUpdater do
|
|
18
18
|
}
|
19
19
|
}
|
20
20
|
}'
|
21
|
+
|
22
|
+
@new_template_body = '{ "Parameters":
|
23
|
+
{
|
24
|
+
"param1" :
|
25
|
+
{
|
26
|
+
"Description" : "param-1"
|
27
|
+
},
|
28
|
+
"param2" :
|
29
|
+
{
|
30
|
+
"Description" : "param-2"
|
31
|
+
},
|
32
|
+
"param3" :
|
33
|
+
{
|
34
|
+
"Description" : "param-3"
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}'
|
21
38
|
end
|
22
39
|
|
23
40
|
it "should update the stack when parameters change and stack is stable" do
|
@@ -41,39 +58,50 @@ describe SimpleDeploy::StackUpdater do
|
|
41
58
|
:template_body => @template_body,
|
42
59
|
:entry => entry_mock
|
43
60
|
|
44
|
-
stack_updater.
|
61
|
+
stack_updater.update_stack( [ { 'param1' => 'new-value' } ] ).
|
45
62
|
should == true
|
46
63
|
end
|
47
64
|
|
48
|
-
it "should
|
65
|
+
it "should update the stack when only the template body changes and stack is stable" do
|
49
66
|
attributes = { "param1" => "value1", "param3" => "value3" }
|
50
67
|
entry_mock = mock 'entry mock'
|
51
68
|
status_mock = mock 'status mock'
|
52
69
|
cloud_formation_mock = mock 'cloud formation mock'
|
53
70
|
SimpleDeploy::AWS::CloudFormation.should_receive(:new).
|
54
|
-
|
71
|
+
and_return cloud_formation_mock
|
72
|
+
entry_mock.stub(:attributes).and_return attributes
|
73
|
+
|
74
|
+
cloud_formation_mock.should_receive(:update).
|
75
|
+
with(:name => 'test-stack',
|
76
|
+
:parameters => { 'param1' => 'value1', 'param3' => 'value3' },
|
77
|
+
:template => @new_template_body).
|
78
|
+
and_return true
|
55
79
|
SimpleDeploy::Status.should_receive(:new).
|
56
|
-
|
57
|
-
|
58
|
-
status_mock.
|
80
|
+
with(:name => 'test-stack').
|
81
|
+
and_return status_mock
|
82
|
+
status_mock.stub(:wait_for_stable).and_return true
|
59
83
|
stack_updater = SimpleDeploy::StackUpdater.new :name => 'test-stack',
|
60
|
-
:template_body => @
|
84
|
+
:template_body => @new_template_body,
|
61
85
|
:entry => entry_mock
|
62
86
|
|
63
|
-
|
64
|
-
should raise_error
|
87
|
+
stack_updater.update_stack([]).should == true
|
65
88
|
end
|
66
89
|
|
67
|
-
it "should
|
68
|
-
attributes = { "param3" => "value3" }
|
90
|
+
it "should raise an error when parameters change and stack is not stable" do
|
91
|
+
attributes = { "param1" => "value1", "param3" => "value3" }
|
69
92
|
entry_mock = mock 'entry mock'
|
70
|
-
|
93
|
+
status_mock = mock 'status mock'
|
94
|
+
cloud_formation_mock = mock 'cloud formation mock'
|
95
|
+
SimpleDeploy::AWS::CloudFormation.should_receive(:new).never
|
96
|
+
SimpleDeploy::Status.should_receive(:new).
|
97
|
+
with(:name => 'test-stack').
|
98
|
+
and_return status_mock
|
99
|
+
status_mock.stub(:wait_for_stable).and_return false
|
71
100
|
stack_updater = SimpleDeploy::StackUpdater.new :name => 'test-stack',
|
72
101
|
:template_body => @template_body,
|
73
102
|
:entry => entry_mock
|
74
103
|
|
75
|
-
stack_updater.
|
76
|
-
should
|
104
|
+
lambda {stack_updater.update_stack( [ { 'param1' => 'new-value' } ] ) }.
|
105
|
+
should raise_error
|
77
106
|
end
|
78
|
-
|
79
107
|
end
|
data/spec/stack_spec.rb
CHANGED
@@ -83,8 +83,7 @@ describe SimpleDeploy::Stack do
|
|
83
83
|
:entry => @entry_mock,
|
84
84
|
:template_body => 'some_json').
|
85
85
|
and_return @stack_updater_mock
|
86
|
-
@stack_updater_mock.
|
87
|
-
and_return(true)
|
86
|
+
@stack_updater_mock.stub(:update_stack).and_return(true)
|
88
87
|
SimpleDeploy::StackReader.should_receive(:new).
|
89
88
|
with(:name => 'test-stack').
|
90
89
|
and_return @stack_reader_mock
|
@@ -118,8 +117,7 @@ describe SimpleDeploy::Stack do
|
|
118
117
|
:entry => @entry_mock,
|
119
118
|
:template_body => 'some_json').
|
120
119
|
and_return @stack_updater_mock
|
121
|
-
@stack_updater_mock.
|
122
|
-
and_return(true)
|
120
|
+
@stack_updater_mock.stub(:update_stack).and_return(true)
|
123
121
|
SimpleDeploy::StackReader.should_receive(:new).
|
124
122
|
with(:name => 'test-stack').
|
125
123
|
and_return @stack_reader_mock
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fakefs
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70199856979460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.4.2
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 0.4.2
|
24
|
+
version_requirements: *70199856979460
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: rake
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70199856978480 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ! '>='
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: '0'
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
35
|
+
version_requirements: *70199856978480
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: rspec
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70199857004380 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ~>
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: 2.13.0
|
54
44
|
type: :development
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 2.13.0
|
46
|
+
version_requirements: *70199857004380
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: simplecov
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70199857003340 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ~>
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: 0.7.1
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 0.7.1
|
57
|
+
version_requirements: *70199857003340
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: timecop
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &70199857002440 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ~>
|
@@ -85,31 +65,21 @@ dependencies:
|
|
85
65
|
version: 0.6.1
|
86
66
|
type: :development
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 0.6.1
|
68
|
+
version_requirements: *70199857002440
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: capistrano
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &70199857001780 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
73
|
requirements:
|
99
|
-
- -
|
74
|
+
- - =
|
100
75
|
- !ruby/object:Gem::Version
|
101
76
|
version: 2.13.5
|
102
77
|
type: :runtime
|
103
78
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - '='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 2.13.5
|
79
|
+
version_requirements: *70199857001780
|
110
80
|
- !ruby/object:Gem::Dependency
|
111
81
|
name: esbit
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &70199857000960 !ruby/object:Gem::Requirement
|
113
83
|
none: false
|
114
84
|
requirements:
|
115
85
|
- - ~>
|
@@ -117,60 +87,40 @@ dependencies:
|
|
117
87
|
version: 0.0.4
|
118
88
|
type: :runtime
|
119
89
|
prerelease: false
|
120
|
-
version_requirements:
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ~>
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 0.0.4
|
90
|
+
version_requirements: *70199857000960
|
126
91
|
- !ruby/object:Gem::Dependency
|
127
92
|
name: trollop
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirement: &70199857000240 !ruby/object:Gem::Requirement
|
129
94
|
none: false
|
130
95
|
requirements:
|
131
|
-
- -
|
96
|
+
- - =
|
132
97
|
- !ruby/object:Gem::Version
|
133
98
|
version: '2.0'
|
134
99
|
type: :runtime
|
135
100
|
prerelease: false
|
136
|
-
version_requirements:
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - '='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '2.0'
|
101
|
+
version_requirements: *70199857000240
|
142
102
|
- !ruby/object:Gem::Dependency
|
143
103
|
name: fog
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirement: &70199856999600 !ruby/object:Gem::Requirement
|
145
105
|
none: false
|
146
106
|
requirements:
|
147
|
-
- -
|
107
|
+
- - =
|
148
108
|
- !ruby/object:Gem::Version
|
149
109
|
version: 1.10.0
|
150
110
|
type: :runtime
|
151
111
|
prerelease: false
|
152
|
-
version_requirements:
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - '='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: 1.10.0
|
112
|
+
version_requirements: *70199856999600
|
158
113
|
- !ruby/object:Gem::Dependency
|
159
114
|
name: xml-simple
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirement: &70199856999020 !ruby/object:Gem::Requirement
|
161
116
|
none: false
|
162
117
|
requirements:
|
163
|
-
- -
|
118
|
+
- - =
|
164
119
|
- !ruby/object:Gem::Version
|
165
120
|
version: 1.1.2
|
166
121
|
type: :runtime
|
167
122
|
prerelease: false
|
168
|
-
version_requirements:
|
169
|
-
none: false
|
170
|
-
requirements:
|
171
|
-
- - '='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 1.1.2
|
123
|
+
version_requirements: *70199856999020
|
174
124
|
description: Opinionated gem for Managing AWS Cloud Formation stacks and deploying
|
175
125
|
updates to Instances.
|
176
126
|
email:
|
@@ -296,15 +246,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
296
246
|
- - ! '>='
|
297
247
|
- !ruby/object:Gem::Version
|
298
248
|
version: '0'
|
249
|
+
segments:
|
250
|
+
- 0
|
251
|
+
hash: -4463041608859511605
|
299
252
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
300
253
|
none: false
|
301
254
|
requirements:
|
302
255
|
- - ! '>='
|
303
256
|
- !ruby/object:Gem::Version
|
304
257
|
version: '0'
|
258
|
+
segments:
|
259
|
+
- 0
|
260
|
+
hash: -4463041608859511605
|
305
261
|
requirements: []
|
306
262
|
rubyforge_project: simple_deploy
|
307
|
-
rubygems_version: 1.8.
|
263
|
+
rubygems_version: 1.8.16
|
308
264
|
signing_key:
|
309
265
|
specification_version: 3
|
310
266
|
summary: Opinionated gem for AWS resource management.
|