engineyard-serverside-adapter 2.1.0 → 2.2.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 +8 -8
- data/ChangeLog.md +9 -0
- data/Rakefile +30 -13
- data/lib/engineyard-serverside-adapter.rb +1 -1
- data/lib/engineyard-serverside-adapter/action.rb +5 -1
- data/lib/engineyard-serverside-adapter/arguments.rb +5 -10
- data/lib/engineyard-serverside-adapter/deploy.rb +1 -0
- data/lib/engineyard-serverside-adapter/version.rb +1 -5
- data/spec/adapter_spec.rb +3 -0
- data/spec/arguments_spec.rb +11 -2
- data/spec/deploy_spec.rb +21 -17
- data/spec/disable_maintenance_spec.rb +7 -5
- data/spec/enable_maintenance_spec.rb +7 -5
- data/spec/integrate_spec.rb +9 -7
- data/spec/restart_spec.rb +8 -6
- data/spec/rollback_spec.rb +10 -8
- data/spec/spec_helper.rb +42 -11
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjY3NzdlMzA1N2I0NmZhYjg1MmFkY2I2ZGM4NDJjYTY5OTJiNzI4Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTBlOTYyN2VlMjFmNzM3ZmFkNTdmMzU5MGNmYjk0YjI0OTI4ZWE4MQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzU4MzAxMmY3YTQ4ZWZkMzhmNmMyNjVlMTYzODMxZTIyNjExNjVhN2Q2ZWNm
|
10
|
+
MDgyNDRmZDI4Mjc5MDI4M2IyYTZmMGM5MTkzNjdlNTkwYmM0Y2JmZWRkNjY0
|
11
|
+
ODI5OWJlMmI4ZGVlNDEwMzVhN2FhODU4ZjllN2MzZjc4ZjRiYTU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmY1Yjk5NWY0MjIzMzUwMzQxNjg2OTJmZDEwNTk3YTgxYTE1NDNkZmE5NjQ3
|
14
|
+
ZDcxYmFmMjA4YTAwZGQxODZiYzliNTAyNDMzMzE2YTg2NTA5ZGFjZmE1MmI0
|
15
|
+
NDBmYjg5NTcxYjk5NWE0NTlhNjE1ZTllNTM1ZTdjNDcyZWEyNWQ=
|
data/ChangeLog.md
ADDED
data/Rakefile
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'rspec/core/rake_task'
|
2
|
+
require 'date'
|
3
|
+
|
2
4
|
RSpec::Core::RakeTask.new(:spec) do |t|
|
3
5
|
t.rspec_opts = ['-cfs']
|
4
6
|
end
|
@@ -9,12 +11,22 @@ task :release do
|
|
9
11
|
puts "Adapter DOES NOT bump serverside automatically anymore."
|
10
12
|
puts "Please reference the serverside_version in the client."
|
11
13
|
puts
|
14
|
+
|
12
15
|
new_version = remove_pre
|
16
|
+
write_version new_version
|
17
|
+
release_changelog(new_version)
|
13
18
|
|
14
|
-
run_commands(
|
19
|
+
run_commands(
|
20
|
+
"git add ChangeLog.md #{version_path}",
|
21
|
+
"git commit -m 'Bump versions for release #{new_version}'",
|
15
22
|
"gem build engineyard-serverside-adapter.gemspec")
|
16
23
|
|
17
|
-
next_pre(new_version)
|
24
|
+
write_version next_pre(new_version)
|
25
|
+
|
26
|
+
run_commands(
|
27
|
+
"git add #{version_path}",
|
28
|
+
"git commit -m 'Add .pre for next release'",
|
29
|
+
"git tag v#{new_version} HEAD^")
|
18
30
|
|
19
31
|
puts <<-PUSHGEM
|
20
32
|
## To publish the gem: #########################################################
|
@@ -36,27 +48,32 @@ def run_commands(*cmds)
|
|
36
48
|
end
|
37
49
|
end
|
38
50
|
|
51
|
+
def release_changelog(version)
|
52
|
+
clog = Pathname.new('ChangeLog.md')
|
53
|
+
new_clog = clog.read.sub(/^## NEXT$/, <<-SUB.chomp)
|
54
|
+
## NEXT
|
55
|
+
|
56
|
+
*
|
57
|
+
|
58
|
+
## v#{version} (#{Date.today})
|
59
|
+
SUB
|
60
|
+
clog.open('w') { |f| f.puts new_clog }
|
61
|
+
end
|
62
|
+
|
39
63
|
def remove_pre
|
40
64
|
require 'engineyard-serverside-adapter/version'
|
41
|
-
|
42
|
-
puts "New version is #{new_version}"
|
43
|
-
bump(new_version, "Bump to version #{new_version}")
|
44
|
-
new_version.to_s
|
65
|
+
Gem::Version.create(EY::Serverside::Adapter::VERSION).release
|
45
66
|
end
|
46
67
|
|
47
68
|
def next_pre(version)
|
48
|
-
digits = version.scan(/(\d+)/).map { |x| x.first.to_i }
|
69
|
+
digits = version.to_s.scan(/(\d+)/).map { |x| x.first.to_i }
|
49
70
|
digits[-1] += 1
|
50
71
|
new_version = digits.join('.') + ".pre"
|
51
|
-
puts "Next version is #{new_version}"
|
52
|
-
bump(new_version, "Add .pre for next release")
|
53
72
|
end
|
54
73
|
|
55
|
-
def
|
74
|
+
def write_version(new_version)
|
56
75
|
contents = version_path.read.sub(/VERSION = "[^"]+"/, %|VERSION = "#{new_version}"|)
|
76
|
+
puts "engineyard-serverside-adapter (#{new_version})"
|
57
77
|
version_path.unlink
|
58
78
|
version_path.open('w') { |f| f.write contents }
|
59
|
-
run_commands(
|
60
|
-
"git add #{version_path}",
|
61
|
-
"git commit -m '#{commit_msg}'")
|
62
79
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'pathname'
|
2
|
+
require 'engineyard-serverside-adapter/version'
|
2
3
|
|
3
4
|
module EY
|
4
5
|
module Serverside
|
5
6
|
class Adapter
|
6
|
-
require 'engineyard-serverside-adapter/version'
|
7
7
|
autoload :Action, 'engineyard-serverside-adapter/action'
|
8
8
|
autoload :Arguments, 'engineyard-serverside-adapter/arguments'
|
9
9
|
autoload :Command, 'engineyard-serverside-adapter/command'
|
@@ -29,7 +29,7 @@ module EY
|
|
29
29
|
|
30
30
|
block.call @arguments if block
|
31
31
|
|
32
|
-
@serverside_version =
|
32
|
+
@serverside_version = @arguments.serverside_version
|
33
33
|
|
34
34
|
validate!
|
35
35
|
end
|
@@ -120,6 +120,10 @@ module EY
|
|
120
120
|
end
|
121
121
|
|
122
122
|
def validate!
|
123
|
+
unless @serverside_version
|
124
|
+
raise ArgumentError, "Required field [serverside_version] not provided."
|
125
|
+
end
|
126
|
+
|
123
127
|
missing = required_options - given_options
|
124
128
|
unless missing.empty?
|
125
129
|
options_s = missing.map{|option| option.name}.join(', ')
|
@@ -18,16 +18,9 @@ module EY
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def self.aliased_attribute(pairs)
|
22
|
-
pairs.each do |from, to|
|
23
|
-
alias_method from, to
|
24
|
-
alias_method :"#{from}=", "#{to}="
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
21
|
nonempty_attr_accessor :app, :account_name, :archive, :environment_name
|
29
|
-
nonempty_attr_accessor :framework_env, :git, :ref, :
|
30
|
-
attr_accessor :config, :migrate, :verbose
|
22
|
+
nonempty_attr_accessor :framework_env, :git, :ref, :stack
|
23
|
+
attr_accessor :clean, :config, :migrate, :serverside_version, :verbose
|
31
24
|
attr_reader :instances
|
32
25
|
alias repo git # for versions where --repo is required, it is accessed via this alias
|
33
26
|
|
@@ -49,8 +42,10 @@ module EY
|
|
49
42
|
@instances = instances
|
50
43
|
end
|
51
44
|
|
52
|
-
# Uses Gem::Version.create to validate the version string
|
53
45
|
def serverside_version=(value)
|
46
|
+
if value.nil? || value.to_s.empty?
|
47
|
+
raise ArgumentError, "Value for 'serverside_version' must be non-empty."
|
48
|
+
end
|
54
49
|
@serverside_version = Gem::Version.create(value.dup) # dup b/c Gem::Version sometimes modifies its argument :(
|
55
50
|
end
|
56
51
|
|
@@ -6,6 +6,7 @@ module EY
|
|
6
6
|
option :app, :string, :required => true
|
7
7
|
option :account_name, :string, :required => true, :version => '>= 2.0.0'
|
8
8
|
option :archive, :string, :version => '>= 2.3.0'
|
9
|
+
option :clean, :boolean, :version => '>= 2.3.1'
|
9
10
|
option :config, :json
|
10
11
|
option :environment_name, :string, :required => true, :version => '>= 2.0.0'
|
11
12
|
option :git, :string, :version => '>= 2.3.0'
|
@@ -1,11 +1,7 @@
|
|
1
1
|
module EY
|
2
2
|
module Serverside
|
3
3
|
class Adapter
|
4
|
-
VERSION = "2.
|
5
|
-
# For backwards compatibility, the serverside version default will be maintained until 2.1
|
6
|
-
# It is recommended that you supply a serverside_version to engineyard-serverside-adapter
|
7
|
-
# rather than relying on the default version here. This default will go away soon.
|
8
|
-
ENGINEYARD_SERVERSIDE_VERSION = ENV['ENGINEYARD_SERVERSIDE_VERSION'] || "2.3.0"
|
4
|
+
VERSION = "2.2.0"
|
9
5
|
end
|
10
6
|
end
|
11
7
|
end
|
data/spec/adapter_spec.rb
CHANGED
@@ -11,6 +11,7 @@ shared_examples_for "a serverside action" do
|
|
11
11
|
args.ref = 'master'
|
12
12
|
args.git = 'git@github.com:engineyard/engineyard-serverside.git'
|
13
13
|
args.stack = 'nginx_unicorn'
|
14
|
+
args.serverside_version = serverside_version
|
14
15
|
args
|
15
16
|
end
|
16
17
|
end
|
@@ -88,6 +89,7 @@ shared_examples_for "a serverside action" do
|
|
88
89
|
args.ref = 'master'
|
89
90
|
args.git = 'git@github.com:engineyard/engineyard-serverside.git'
|
90
91
|
args.stack = 'nginx_unicorn'
|
92
|
+
args.serverside_version = serverside_version
|
91
93
|
args
|
92
94
|
end
|
93
95
|
|
@@ -154,6 +156,7 @@ describe EY::Serverside::Adapter do
|
|
154
156
|
args.ref = 'master'
|
155
157
|
args.git = 'git@github.com:engineyard/engineyard-serverside.git'
|
156
158
|
args.stack = 'nginx_unicorn'
|
159
|
+
args.serverside_version = serverside_version
|
157
160
|
end
|
158
161
|
end
|
159
162
|
|
data/spec/arguments_spec.rb
CHANGED
@@ -2,9 +2,9 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe EY::Serverside::Adapter::Arguments do
|
4
4
|
def raises_argument_error(message = nil, &block)
|
5
|
-
|
5
|
+
expect {
|
6
6
|
block.call(described_class.new)
|
7
|
-
}.
|
7
|
+
}.to raise_error(ArgumentError, message)
|
8
8
|
end
|
9
9
|
|
10
10
|
it "raises an ArgumentError immediately when instances is empty" do
|
@@ -31,4 +31,13 @@ describe EY::Serverside::Adapter::Arguments do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
it "raises an ArgumentError immediately when serverside_version is empty" do
|
35
|
+
raises_argument_error(/Value for 'serverside_version' must be non-empty/) do |arguments|
|
36
|
+
arguments.serverside_version = nil
|
37
|
+
end
|
38
|
+
|
39
|
+
raises_argument_error(/Value for 'serverside_version' must be non-empty/) do |arguments|
|
40
|
+
arguments.serverside_version = ''
|
41
|
+
end
|
42
|
+
end
|
34
43
|
end
|
data/spec/deploy_spec.rb
CHANGED
@@ -6,6 +6,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
6
6
|
it_should_behave_like "it accepts app"
|
7
7
|
it_should_behave_like "it accepts account_name"
|
8
8
|
it_should_behave_like "it accepts archive"
|
9
|
+
it_should_behave_like "it accepts clean"
|
9
10
|
it_should_behave_like "it accepts environment_name"
|
10
11
|
it_should_behave_like "it accepts framework_env"
|
11
12
|
it_should_behave_like "it accepts git"
|
@@ -24,6 +25,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
24
25
|
it_should_require :stack
|
25
26
|
it_should_require :ref, %w[1.6.4 2.0.0 2.1.0 2.2.0]
|
26
27
|
it_should_require :git, %w[1.6.4 2.0.0 2.1.0 2.2.0]
|
28
|
+
it_should_require :serverside_version
|
27
29
|
|
28
30
|
it_should_ignore_requirement :environment_name, '1.6.4'
|
29
31
|
it_should_ignore_requirement :account_name, '1.6.4'
|
@@ -51,7 +53,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
51
53
|
arguments.ref = 'master'
|
52
54
|
arguments.git = 'git@github.com:engineyard/engineyard-serverside.git'
|
53
55
|
arguments.stack = "nginx_unicorn"
|
54
|
-
arguments.serverside_version =
|
56
|
+
arguments.serverside_version = serverside_version
|
55
57
|
block.call arguments if block
|
56
58
|
end
|
57
59
|
last_command(adapter)
|
@@ -68,7 +70,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
68
70
|
arguments.instances = [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}]
|
69
71
|
arguments.migrate = 'rake db:migrate'
|
70
72
|
arguments.stack = "nginx_unicorn"
|
71
|
-
arguments.serverside_version =
|
73
|
+
arguments.serverside_version = serverside_version
|
72
74
|
block.call arguments if block_given?
|
73
75
|
end
|
74
76
|
last_command(adapter)
|
@@ -81,7 +83,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
81
83
|
it "invokes exactly the right command" do
|
82
84
|
deploy_command.should == [
|
83
85
|
"engineyard-serverside",
|
84
|
-
"_#{
|
86
|
+
"_#{serverside_version}_",
|
85
87
|
"deploy",
|
86
88
|
"--account-name ey",
|
87
89
|
"--app rackapp",
|
@@ -174,16 +176,17 @@ describe EY::Serverside::Adapter::Deploy do
|
|
174
176
|
context "with git deploy" do
|
175
177
|
let(:command) do
|
176
178
|
adapter = described_class.new do |arguments|
|
177
|
-
arguments.app
|
178
|
-
arguments.environment_name
|
179
|
-
arguments.account_name
|
180
|
-
arguments.framework_env
|
181
|
-
arguments.config
|
182
|
-
arguments.instances
|
183
|
-
arguments.migrate
|
184
|
-
arguments.ref
|
185
|
-
arguments.git
|
186
|
-
arguments.stack
|
179
|
+
arguments.app = "rackapp"
|
180
|
+
arguments.environment_name = 'rackapp_production'
|
181
|
+
arguments.account_name = 'ey'
|
182
|
+
arguments.framework_env = 'production'
|
183
|
+
arguments.config = {'a' => 1}
|
184
|
+
arguments.instances = [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}]
|
185
|
+
arguments.migrate = 'rake db:migrate'
|
186
|
+
arguments.ref = 'master'
|
187
|
+
arguments.git = 'git@github.com:engineyard/engineyard-serverside.git'
|
188
|
+
arguments.stack = "nginx_unicorn"
|
189
|
+
arguments.serverside_version = '2.3.0'
|
187
190
|
end
|
188
191
|
last_command(adapter)
|
189
192
|
end
|
@@ -191,7 +194,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
191
194
|
it "invokes exactly the right command" do
|
192
195
|
command.should == [
|
193
196
|
"engineyard-serverside",
|
194
|
-
"
|
197
|
+
"_2.3.0_",
|
195
198
|
"deploy",
|
196
199
|
"--account-name ey",
|
197
200
|
"--app rackapp",
|
@@ -220,7 +223,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
220
223
|
args.migrate = false
|
221
224
|
args.stack = "nginx_unicorn"
|
222
225
|
args.archive = 'https://github.com/engineyard/engineyard-serverside/archive/master.zip'
|
223
|
-
args.serverside_version =
|
226
|
+
args.serverside_version = '2.3.0'
|
224
227
|
end
|
225
228
|
|
226
229
|
last_command(adapter)
|
@@ -229,7 +232,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
229
232
|
it "invokes exactly the right command" do
|
230
233
|
command.should == [
|
231
234
|
"engineyard-serverside",
|
232
|
-
"
|
235
|
+
"_2.3.0_",
|
233
236
|
"deploy",
|
234
237
|
"--account-name ey",
|
235
238
|
"--app rackapp",
|
@@ -259,6 +262,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
259
262
|
arguments.ref = 'master'
|
260
263
|
arguments.git = 'git@github.com:engineyard/engineyard-serverside.git'
|
261
264
|
arguments.stack = "nginx_unicorn"
|
265
|
+
arguments.serverside_version = '2.3.0'
|
262
266
|
end
|
263
267
|
last_command(adapter)
|
264
268
|
end
|
@@ -270,7 +274,7 @@ describe EY::Serverside::Adapter::Deploy do
|
|
270
274
|
it "invokes exactly the right command" do
|
271
275
|
command.should == [
|
272
276
|
"engineyard-serverside",
|
273
|
-
"
|
277
|
+
"_2.3.0_",
|
274
278
|
"deploy",
|
275
279
|
"--account-name ey",
|
276
280
|
"--app rackapp",
|
@@ -14,6 +14,7 @@ describe EY::Serverside::Adapter::DisableMaintenance do
|
|
14
14
|
it_should_require :environment_name, %w[2.0.0 2.1.0 2.2.0 2.3.0]
|
15
15
|
it_should_require :account_name, %w[2.0.0 2.1.0 2.2.0 2.3.0]
|
16
16
|
it_should_require :instances
|
17
|
+
it_should_require :serverside_version
|
17
18
|
|
18
19
|
it_should_ignore_requirement :environment_name, '1.6.4'
|
19
20
|
it_should_ignore_requirement :account_name, '1.6.4'
|
@@ -24,10 +25,11 @@ describe EY::Serverside::Adapter::DisableMaintenance do
|
|
24
25
|
context "with valid arguments" do
|
25
26
|
let(:command) do
|
26
27
|
adapter = described_class.new do |arguments|
|
27
|
-
arguments.app
|
28
|
-
arguments.environment_name
|
29
|
-
arguments.account_name
|
30
|
-
arguments.instances
|
28
|
+
arguments.app = "rackapp"
|
29
|
+
arguments.environment_name = "rackapp_production"
|
30
|
+
arguments.account_name = "ey"
|
31
|
+
arguments.instances = [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}]
|
32
|
+
arguments.serverside_version = serverside_version
|
31
33
|
end
|
32
34
|
last_command(adapter)
|
33
35
|
end
|
@@ -35,7 +37,7 @@ describe EY::Serverside::Adapter::DisableMaintenance do
|
|
35
37
|
it "invokes exactly the right command" do
|
36
38
|
command.should == [
|
37
39
|
"engineyard-serverside",
|
38
|
-
"_#{
|
40
|
+
"_#{serverside_version}_",
|
39
41
|
"disable_maintenance",
|
40
42
|
"--account-name ey",
|
41
43
|
"--app rackapp",
|
@@ -14,6 +14,7 @@ describe EY::Serverside::Adapter::EnableMaintenance do
|
|
14
14
|
it_should_require :environment_name, %w[2.0.0 2.1.0 2.2.0 2.3.0]
|
15
15
|
it_should_require :account_name, %w[2.0.0 2.1.0 2.2.0 2.3.0]
|
16
16
|
it_should_require :instances
|
17
|
+
it_should_require :serverside_version
|
17
18
|
|
18
19
|
it_should_ignore_requirement :environment_name, '1.6.4'
|
19
20
|
it_should_ignore_requirement :account_name, '1.6.4'
|
@@ -25,10 +26,11 @@ describe EY::Serverside::Adapter::EnableMaintenance do
|
|
25
26
|
|
26
27
|
let(:command) do
|
27
28
|
adapter = described_class.new do |arguments|
|
28
|
-
arguments.app
|
29
|
-
arguments.environment_name
|
30
|
-
arguments.account_name
|
31
|
-
arguments.instances
|
29
|
+
arguments.app = "rackapp"
|
30
|
+
arguments.environment_name = "rackapp_production"
|
31
|
+
arguments.account_name = "ey"
|
32
|
+
arguments.instances = [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}]
|
33
|
+
arguments.serverside_version = serverside_version
|
32
34
|
end
|
33
35
|
last_command(adapter)
|
34
36
|
end
|
@@ -36,7 +38,7 @@ describe EY::Serverside::Adapter::EnableMaintenance do
|
|
36
38
|
it "invokes exactly the right command" do
|
37
39
|
command.should == [
|
38
40
|
"engineyard-serverside",
|
39
|
-
"_#{
|
41
|
+
"_#{serverside_version}_",
|
40
42
|
"enable_maintenance",
|
41
43
|
"--account-name ey",
|
42
44
|
"--app rackapp",
|
data/spec/integrate_spec.rb
CHANGED
@@ -18,6 +18,7 @@ describe EY::Serverside::Adapter::Integrate do
|
|
18
18
|
it_should_require :stack
|
19
19
|
it_should_require :instances
|
20
20
|
it_should_require :framework_env
|
21
|
+
it_should_require :serverside_version
|
21
22
|
|
22
23
|
it_should_ignore_requirement :environment_name, '1.6.4'
|
23
24
|
it_should_ignore_requirement :account_name, '1.6.4'
|
@@ -28,12 +29,13 @@ describe EY::Serverside::Adapter::Integrate do
|
|
28
29
|
context "with valid arguments" do
|
29
30
|
let(:command) do
|
30
31
|
adapter = described_class.new do |arguments|
|
31
|
-
arguments.app
|
32
|
-
arguments.environment_name
|
33
|
-
arguments.account_name
|
34
|
-
arguments.instances
|
35
|
-
arguments.stack
|
36
|
-
arguments.framework_env
|
32
|
+
arguments.app = "rackapp"
|
33
|
+
arguments.environment_name = "rackapp_production"
|
34
|
+
arguments.account_name = "ey"
|
35
|
+
arguments.instances = [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}]
|
36
|
+
arguments.stack = "nginx_unicorn"
|
37
|
+
arguments.framework_env = "production"
|
38
|
+
arguments.serverside_version = serverside_version
|
37
39
|
end
|
38
40
|
last_command(adapter)
|
39
41
|
end
|
@@ -41,7 +43,7 @@ describe EY::Serverside::Adapter::Integrate do
|
|
41
43
|
it "invokes exactly the right command" do
|
42
44
|
command.should == [
|
43
45
|
"engineyard-serverside",
|
44
|
-
"_#{
|
46
|
+
"_#{serverside_version}_",
|
45
47
|
"integrate",
|
46
48
|
"--account-name ey",
|
47
49
|
"--app rackapp",
|
data/spec/restart_spec.rb
CHANGED
@@ -16,6 +16,7 @@ describe EY::Serverside::Adapter::Restart do
|
|
16
16
|
it_should_require :account_name, %w[2.0.0 2.1.0 2.2.0 2.3.0]
|
17
17
|
it_should_require :instances
|
18
18
|
it_should_require :stack
|
19
|
+
it_should_require :serverside_version
|
19
20
|
|
20
21
|
it_should_ignore_requirement :environment_name, '1.6.4'
|
21
22
|
it_should_ignore_requirement :account_name, '1.6.4'
|
@@ -26,11 +27,12 @@ describe EY::Serverside::Adapter::Restart do
|
|
26
27
|
context "with valid arguments" do
|
27
28
|
let(:command) do
|
28
29
|
adapter = described_class.new do |arguments|
|
29
|
-
arguments.app
|
30
|
-
arguments.environment_name
|
31
|
-
arguments.account_name
|
32
|
-
arguments.instances
|
33
|
-
arguments.stack
|
30
|
+
arguments.app = "rackapp"
|
31
|
+
arguments.environment_name = "rackapp_production"
|
32
|
+
arguments.account_name = "ey"
|
33
|
+
arguments.instances = [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}]
|
34
|
+
arguments.stack = "nginx_unicorn"
|
35
|
+
arguments.serverside_version = serverside_version
|
34
36
|
end
|
35
37
|
last_command(adapter)
|
36
38
|
end
|
@@ -38,7 +40,7 @@ describe EY::Serverside::Adapter::Restart do
|
|
38
40
|
it "invokes exactly the right command" do
|
39
41
|
command.should == [
|
40
42
|
"engineyard-serverside",
|
41
|
-
"_#{
|
43
|
+
"_#{serverside_version}_",
|
42
44
|
"restart",
|
43
45
|
"--account-name ey",
|
44
46
|
"--app rackapp",
|
data/spec/rollback_spec.rb
CHANGED
@@ -18,6 +18,7 @@ describe EY::Serverside::Adapter::Rollback do
|
|
18
18
|
it_should_require :framework_env
|
19
19
|
it_should_require :instances
|
20
20
|
it_should_require :stack
|
21
|
+
it_should_require :serverside_version
|
21
22
|
|
22
23
|
it_should_ignore_requirement :environment_name, '1.6.4'
|
23
24
|
it_should_ignore_requirement :account_name, '1.6.4'
|
@@ -28,13 +29,14 @@ describe EY::Serverside::Adapter::Rollback do
|
|
28
29
|
context "with valid arguments" do
|
29
30
|
let(:command) do
|
30
31
|
adapter = described_class.new do |arguments|
|
31
|
-
arguments.app
|
32
|
-
arguments.environment_name
|
33
|
-
arguments.account_name
|
34
|
-
arguments.framework_env
|
35
|
-
arguments.instances
|
36
|
-
arguments.stack
|
37
|
-
arguments.config
|
32
|
+
arguments.app = "rackapp"
|
33
|
+
arguments.environment_name = "rackapp_production"
|
34
|
+
arguments.account_name = "ey"
|
35
|
+
arguments.framework_env = 'production'
|
36
|
+
arguments.instances = [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}]
|
37
|
+
arguments.stack = "nginx_unicorn"
|
38
|
+
arguments.config = {'a' => 1}
|
39
|
+
arguments.serverside_version = serverside_version
|
38
40
|
end
|
39
41
|
last_command(adapter)
|
40
42
|
end
|
@@ -46,7 +48,7 @@ describe EY::Serverside::Adapter::Rollback do
|
|
46
48
|
it "invokes exactly the right command" do
|
47
49
|
command.should == [
|
48
50
|
"engineyard-serverside",
|
49
|
-
"_#{
|
51
|
+
"_#{serverside_version}_",
|
50
52
|
"deploy rollback",
|
51
53
|
"--account-name ey",
|
52
54
|
"--app rackapp",
|
data/spec/spec_helper.rb
CHANGED
@@ -4,18 +4,30 @@ require 'bundler/setup'
|
|
4
4
|
require 'engineyard-serverside-adapter'
|
5
5
|
require 'pp'
|
6
6
|
|
7
|
+
begin
|
8
|
+
specs = Gem::SpecFetcher.fetcher.fetch(Gem::Dependency.new("engineyard-serverside"))
|
9
|
+
ENGINEYARD_SERVERSIDE_VERSION = specs.map {|spec,| spec.version}.sort.last.to_s
|
10
|
+
rescue
|
11
|
+
ENGINEYARD_SERVERSIDE_VERSION = '2.3.1'
|
12
|
+
end
|
13
|
+
|
7
14
|
module ArgumentsHelpers
|
15
|
+
def serverside_version
|
16
|
+
ENGINEYARD_SERVERSIDE_VERSION
|
17
|
+
end
|
18
|
+
|
8
19
|
def valid_options
|
9
20
|
{
|
10
|
-
:app
|
11
|
-
:account_name
|
12
|
-
#:archive
|
13
|
-
:environment_name
|
14
|
-
:framework_env
|
15
|
-
:git
|
16
|
-
:instances
|
17
|
-
:ref
|
18
|
-
:stack
|
21
|
+
:app => 'rackapp',
|
22
|
+
:account_name => 'ey',
|
23
|
+
#:archive => 'https://github.com/engineyard/engineyard-serverside/archive/master.zip',
|
24
|
+
:environment_name => 'rackapp_production',
|
25
|
+
:framework_env => 'production',
|
26
|
+
:git => 'git@github.com:engineyard/engineyard-serverside.git',
|
27
|
+
:instances => [{:hostname => 'localhost', :roles => %w[han solo], :name => 'chewie'}],
|
28
|
+
:ref => 'master',
|
29
|
+
:stack => 'nginx_unicorn',
|
30
|
+
:serverside_version => serverside_version,
|
19
31
|
}
|
20
32
|
end
|
21
33
|
|
@@ -110,14 +122,33 @@ RSpec.configure do |config|
|
|
110
122
|
|
111
123
|
# of course, the only way to be sure is to actually run it, but
|
112
124
|
# this gives us regression-proofing
|
113
|
-
version =
|
125
|
+
version = serverside_version
|
114
126
|
escaped_version = version.gsub(/\./, '\\.')
|
115
127
|
installation_command.should == "(gem list engineyard-serverside | grep 'engineyard-serverside ' | egrep -q '#{escaped_version}[,)]') || (sudo sh -c 'cd `mktemp -d` && gem install engineyard-serverside --no-rdoc --no-ri -v #{version}')"
|
116
128
|
|
117
129
|
|
118
130
|
installation_command.should =~ /gem list engineyard-serverside/
|
119
131
|
installation_command.should =~ /egrep -q /
|
120
|
-
installation_command.should =~ /gem install engineyard-serverside.*-v #{Regexp.quote
|
132
|
+
installation_command.should =~ /gem install engineyard-serverside.*-v #{Regexp.quote serverside_version}/
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
shared_examples_for "it accepts clean" do
|
137
|
+
context "the --clean arg" do
|
138
|
+
it "is present when you set clean to true" do
|
139
|
+
adapter = described_class.new(:arguments => arguments_with(:clean => true))
|
140
|
+
last_command(adapter).should =~ /--clean/
|
141
|
+
end
|
142
|
+
|
143
|
+
it "is absent when you set clean to false" do
|
144
|
+
adapter = described_class.new(:arguments => arguments_with(:clean => false))
|
145
|
+
last_command(adapter).should_not =~ /--clean/
|
146
|
+
end
|
147
|
+
|
148
|
+
it "is absent when you omit clean" do
|
149
|
+
adapter = described_class.new(:arguments => valid_arguments)
|
150
|
+
last_command(adapter).should_not =~ /--clean/
|
151
|
+
end
|
121
152
|
end
|
122
153
|
end
|
123
154
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-serverside-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Emde
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: escape
|
@@ -78,6 +78,7 @@ extra_rdoc_files: []
|
|
78
78
|
files:
|
79
79
|
- .gitignore
|
80
80
|
- .travis.yml
|
81
|
+
- ChangeLog.md
|
81
82
|
- Gemfile
|
82
83
|
- Guardfile
|
83
84
|
- LICENSE
|