engineyard-serverside 2.2.0.rc2 → 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.
- data/lib/engineyard-serverside/configuration.rb +1 -1
- data/lib/engineyard-serverside/deploy_hook.rb +19 -6
- data/lib/engineyard-serverside/rails_assets/strategy.rb +16 -4
- data/lib/engineyard-serverside/shell.rb +0 -1
- data/lib/engineyard-serverside/version.rb +1 -1
- data/spec/deploy_hook_spec.rb +36 -13
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +1 -0
- data/spec/rails31_deploy_spec.rb +16 -1
- metadata +129 -119
- data/lib/engineyard-serverside/shell/command_result.rb +0 -16
@@ -7,7 +7,7 @@ require 'engineyard-serverside/paths'
|
|
7
7
|
module EY
|
8
8
|
module Serverside
|
9
9
|
class Deploy::Configuration
|
10
|
-
include Paths::LegacyHelpers
|
10
|
+
include Paths::LegacyHelpers # deploy hooks depend on these to be here as well. Don't remove without plenty of deprecation warnings.
|
11
11
|
|
12
12
|
# Defines a fetch method for the specified key.
|
13
13
|
# If no default and no block is specified, it means the key is required
|
@@ -3,21 +3,23 @@ require 'engineyard-serverside/shell/helpers'
|
|
3
3
|
module EY
|
4
4
|
module Serverside
|
5
5
|
class DeployHook
|
6
|
+
attr_reader :config, :shell, :hook_name
|
7
|
+
|
6
8
|
def initialize(config, shell, hook_name)
|
7
9
|
@config, @shell, @hook_name = config, shell, hook_name
|
8
10
|
end
|
9
11
|
|
10
12
|
def hook_path
|
11
|
-
|
13
|
+
config.paths.deploy_hook(hook_name)
|
12
14
|
end
|
13
15
|
|
14
16
|
def callback_context
|
15
|
-
@context ||= CallbackContext.new(
|
17
|
+
@context ||= CallbackContext.new(config, shell, hook_path)
|
16
18
|
end
|
17
19
|
|
18
20
|
def call
|
19
21
|
if hook_path.exist?
|
20
|
-
Dir.chdir(
|
22
|
+
Dir.chdir(config.paths.active_release.to_s) do
|
21
23
|
if desc = syntax_error(hook_path)
|
22
24
|
hook_name = hook_path.basename
|
23
25
|
abort "*** [Error] Invalid Ruby syntax in hook: #{hook_name} ***\n*** #{desc.chomp} ***"
|
@@ -29,14 +31,24 @@ module EY
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def eval_hook(code)
|
34
|
+
display_deprecation_warnings(code)
|
32
35
|
callback_context.instance_eval(code)
|
33
36
|
rescue Exception => exception
|
34
37
|
display_hook_error(exception, code, hook_path)
|
35
38
|
raise exception
|
36
39
|
end
|
37
40
|
|
41
|
+
def display_deprecation_warnings(code)
|
42
|
+
if code =~ /@configuration/
|
43
|
+
shell.warning("Use of `@configuration` in deploy hooks is deprecated.\nPlease use `config`, which provides access to the same object.\n\tin #{hook_path}")
|
44
|
+
end
|
45
|
+
if code =~ /@node/
|
46
|
+
shell.warning("Use of `@node` in deploy hooks is deprecated.\nPlease use `config.node`, which provides access to the same object.\n\tin #{hook_path}")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
38
50
|
def display_hook_error(exception, code, hook_path)
|
39
|
-
|
51
|
+
shell.fatal <<-ERROR
|
40
52
|
Exception raised in deploy hook #{hook_path}.
|
41
53
|
|
42
54
|
#{exception.class}: #{exception.to_s}
|
@@ -53,13 +65,13 @@ Please fix this error before retrying.
|
|
53
65
|
class CallbackContext
|
54
66
|
include EY::Serverside::Shell::Helpers
|
55
67
|
|
56
|
-
attr_reader :shell
|
68
|
+
attr_reader :shell, :hook_path
|
57
69
|
|
58
70
|
def initialize(config, shell, hook_path)
|
59
71
|
@configuration = config
|
60
72
|
@configuration.set_framework_envs
|
61
73
|
@shell = shell
|
62
|
-
@node = node
|
74
|
+
@node = config.node
|
63
75
|
@hook_path = hook_path
|
64
76
|
end
|
65
77
|
|
@@ -73,6 +85,7 @@ Please fix this error before retrying.
|
|
73
85
|
|
74
86
|
def method_missing(meth, *args, &blk)
|
75
87
|
if @configuration.respond_to?(meth)
|
88
|
+
shell.warning "Use of `#{meth}` (via method_missing) is deprecated in favor of `config.#{meth}` for improved error messages and compatibility.\n\tin #{hook_path}"
|
76
89
|
@configuration.send(meth, *args, &blk)
|
77
90
|
else
|
78
91
|
super
|
@@ -34,7 +34,7 @@ module EY
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def reusable?
|
37
|
-
previous_assets_path
|
37
|
+
previous_assets_path && previous_assets_path.entries.any?
|
38
38
|
end
|
39
39
|
|
40
40
|
def reuse
|
@@ -47,8 +47,11 @@ module EY
|
|
47
47
|
# This results in the directory structure:
|
48
48
|
# deploy_root/current/public/last_assets/assets -> deploy_root/releases/<prev>/public/assets
|
49
49
|
def prepare
|
50
|
-
|
51
|
-
|
50
|
+
if previous_assets_path
|
51
|
+
last = paths.public.join('last_assets')
|
52
|
+
run "mkdir -p #{last} && ln -nfs #{previous_assets_path} #{last.join('assets')}"
|
53
|
+
end
|
54
|
+
|
52
55
|
yield
|
53
56
|
end
|
54
57
|
|
@@ -58,8 +61,17 @@ module EY
|
|
58
61
|
runner.run cmd
|
59
62
|
end
|
60
63
|
|
64
|
+
# Just to be safe, we don't check the real path until runtime
|
65
|
+
# to make sure the relevant directories are there.
|
61
66
|
def previous_assets_path
|
62
|
-
|
67
|
+
return @previous_assets_path if defined? @previous_assets_path
|
68
|
+
if prev = paths.previous_release(paths.active_release)
|
69
|
+
@previous_assets_path = prev.join('public','assets')
|
70
|
+
@previous_assets_path = nil unless @previous_assets_path.directory?
|
71
|
+
else
|
72
|
+
@previous_assets_path = nil
|
73
|
+
end
|
74
|
+
@previous_assets_path
|
63
75
|
end
|
64
76
|
end
|
65
77
|
|
data/spec/deploy_hook_spec.rb
CHANGED
@@ -119,6 +119,13 @@ describe "deploy hooks" do
|
|
119
119
|
deploy_hook.eval_hook('respond_to?(:failed_release_dir)').should be_true
|
120
120
|
deploy_hook.eval_hook('respond_to?(:release_path) ').should be_true
|
121
121
|
end
|
122
|
+
|
123
|
+
it "shows a deprecation warning that asks you to use config to access these variables" do
|
124
|
+
deploy_hook.eval_hook('shared_path.nil?').should be_false
|
125
|
+
out = read_output
|
126
|
+
out.should include("Use of `shared_path` (via method_missing) is deprecated in favor of `config.shared_path` for improved error messages and compatibility.")
|
127
|
+
out.should =~ %r|in /data/app_name/releases/\d+/deploy/fake_test_hook.rb|
|
128
|
+
end
|
122
129
|
end
|
123
130
|
|
124
131
|
context "access to command line options that should be handed through to the config" do
|
@@ -139,7 +146,7 @@ describe "deploy hooks" do
|
|
139
146
|
end
|
140
147
|
end
|
141
148
|
|
142
|
-
context "
|
149
|
+
context "node" do
|
143
150
|
before(:each) do
|
144
151
|
EY::Serverside.dna_json = MultiJson.dump({
|
145
152
|
'instance_role' => 'solo',
|
@@ -152,35 +159,51 @@ describe "deploy hooks" do
|
|
152
159
|
})
|
153
160
|
end
|
154
161
|
|
155
|
-
it "is
|
162
|
+
it "is deprecated through the @node ivar" do
|
156
163
|
deploy_hook.eval_hook('@node.nil?').should be_false
|
164
|
+
out = read_output
|
165
|
+
out.should =~ %r|Use of `@node` in deploy hooks is deprecated.|
|
166
|
+
out.should =~ %r|Please use `config.node`, which provides access to the same object.|
|
167
|
+
out.should =~ %r|/data/app_name/releases/\d+/deploy/fake_test_hook.rb|
|
168
|
+
end
|
169
|
+
|
170
|
+
it "is available" do
|
171
|
+
deploy_hook.eval_hook('config.node.nil?').should be_false
|
157
172
|
end
|
158
173
|
|
159
174
|
it "has indifferent access" do
|
160
|
-
deploy_hook.eval_hook('
|
161
|
-
deploy_hook.eval_hook('
|
175
|
+
deploy_hook.eval_hook('config.node[:instance_role] ').should == 'solo'
|
176
|
+
deploy_hook.eval_hook('config.node["instance_role"]').should == 'solo'
|
162
177
|
end
|
163
178
|
|
164
179
|
it "has deep indifferent access" do
|
165
|
-
deploy_hook.eval_hook('
|
166
|
-
deploy_hook.eval_hook('
|
167
|
-
deploy_hook.eval_hook('
|
180
|
+
deploy_hook.eval_hook('config.node["applications"]["myapp"]["type"]').should == 'rails'
|
181
|
+
deploy_hook.eval_hook('config.node[:applications]["myapp"][:type] ').should == 'rails'
|
182
|
+
deploy_hook.eval_hook('config.node[:applications][:myapp][:type] ').should == 'rails'
|
168
183
|
end
|
169
184
|
end
|
170
185
|
|
171
|
-
context "
|
186
|
+
context "config" do
|
172
187
|
it "is available" do
|
188
|
+
deploy_hook.eval_hook('config.nil?').should be_false
|
189
|
+
end
|
190
|
+
|
191
|
+
it "is deprecated through the @configuration ivar" do
|
173
192
|
deploy_hook.eval_hook('@configuration.nil?').should be_false
|
193
|
+
out = read_output
|
194
|
+
out.should =~ %r|Use of `@configuration` in deploy hooks is deprecated.|
|
195
|
+
out.should =~ %r|Please use `config`, which provides access to the same object.|
|
196
|
+
out.should =~ %r|/data/app_name/releases/\d+/deploy/fake_test_hook.rb|
|
174
197
|
end
|
175
198
|
|
176
199
|
it "has the configuration in it" do
|
177
|
-
deploy_hook('bert' => 'ernie').eval_hook('
|
200
|
+
deploy_hook('bert' => 'ernie').eval_hook('config.bert').should == 'ernie'
|
178
201
|
end
|
179
202
|
|
180
203
|
it "can be accessed with method calls, with [:symbols], or ['strings']" do
|
181
|
-
deploy_hook('bert' => 'ernie').eval_hook('
|
182
|
-
deploy_hook('bert' => 'ernie').eval_hook('
|
183
|
-
deploy_hook('bert' => 'ernie').eval_hook('
|
204
|
+
deploy_hook('bert' => 'ernie').eval_hook('config.bert ').should == 'ernie'
|
205
|
+
deploy_hook('bert' => 'ernie').eval_hook('config[:bert] ').should == 'ernie'
|
206
|
+
deploy_hook('bert' => 'ernie').eval_hook('config["bert"]').should == 'ernie'
|
184
207
|
end
|
185
208
|
|
186
209
|
[:repository_cache,
|
@@ -192,7 +215,7 @@ describe "deploy hooks" do
|
|
192
215
|
:revision,
|
193
216
|
:environment].each do |attribute|
|
194
217
|
it "has the #{attribute.inspect} attribute for compatibility with chef-deploy" do
|
195
|
-
deploy_hook.eval_hook("
|
218
|
+
deploy_hook.eval_hook("config.has_key?(#{attribute.inspect})").should be_true
|
196
219
|
end
|
197
220
|
end
|
198
221
|
end
|
data/spec/rails31_deploy_spec.rb
CHANGED
@@ -58,6 +58,21 @@ describe "Deploying a Rails 3.1 application" do
|
|
58
58
|
deploy_dir.join('current', 'public', 'assets', 'compiled_asset').should exist
|
59
59
|
read_output.should_not =~ %r#Reusing existing assets#
|
60
60
|
end
|
61
|
+
|
62
|
+
%w[cleaning shared private].each do |strategy|
|
63
|
+
it "precompiles assets with asset_strategy '#{strategy}', then reuses them on the next deploy if nothing has changed" do
|
64
|
+
deploy_test_application('assets_enabled_in_ey_yml', 'config' => {'asset_strategy' => strategy})
|
65
|
+
deploy_dir.join('current', 'precompiled').should exist
|
66
|
+
deploy_dir.join('current', 'public', 'assets').should exist
|
67
|
+
deploy_dir.join('current', 'public', 'assets', 'compiled_asset').should exist
|
68
|
+
|
69
|
+
redeploy_test_application
|
70
|
+
deploy_dir.join('current', 'precompiled').should_not exist # doesn't run the task
|
71
|
+
deploy_dir.join('current', 'public', 'assets').should exist # but the assets are there
|
72
|
+
deploy_dir.join('current', 'public', 'assets', 'compiled_asset').should exist
|
73
|
+
read_output.should =~ %r#Reusing existing assets\. \(configured asset_dependencies unchanged from \w{7}..\w{7}\)#
|
74
|
+
end
|
75
|
+
end
|
61
76
|
end
|
62
77
|
|
63
78
|
context "with asset compilation enabled in ey.yml, despite not otherwise being enabled" do
|
@@ -102,7 +117,7 @@ describe "Deploying a Rails 3.1 application" do
|
|
102
117
|
|
103
118
|
it "deploys successfully when application.rb has utf-8 encoding" do
|
104
119
|
deploy_test_application('assets_disabled_utf8')
|
105
|
-
deploy_dir.join('current', 'precompiled').
|
120
|
+
deploy_dir.join('current', 'precompiled').should_not exist
|
106
121
|
read_output.should include("Skipping asset precompilation. ('config/application.rb' disables assets.)")
|
107
122
|
end
|
108
123
|
end
|
metadata
CHANGED
@@ -1,151 +1,151 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-serverside
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 2.2.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- EY Cloud Team
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2013-07-25 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rspec
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 2.12.0
|
22
|
-
type: :development
|
23
22
|
prerelease: false
|
24
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
|
-
requirements:
|
25
|
+
requirements:
|
27
26
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 63
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 12
|
32
|
+
- 0
|
29
33
|
version: 2.12.0
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rake
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
34
|
type: :development
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
39
38
|
prerelease: false
|
40
|
-
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
54
48
|
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rdoc
|
55
52
|
prerelease: false
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: timecop
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
65
54
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
70
62
|
type: :development
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: timecop
|
71
66
|
prerelease: false
|
72
|
-
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: simplecov
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
81
68
|
none: false
|
82
|
-
requirements:
|
83
|
-
- -
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
|
69
|
+
requirements:
|
70
|
+
- - "="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 5
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
- 6
|
76
|
+
- 1
|
77
|
+
version: 0.6.1
|
86
78
|
type: :development
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: simplecov
|
87
82
|
prerelease: false
|
88
|
-
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: engineyard-cloud-client
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
97
84
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 3
|
89
|
+
segments:
|
90
|
+
- 0
|
91
|
+
version: "0"
|
102
92
|
type: :development
|
93
|
+
version_requirements: *id005
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: engineyard-cloud-client
|
103
96
|
prerelease: false
|
104
|
-
|
97
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
105
98
|
none: false
|
106
|
-
requirements:
|
99
|
+
requirements:
|
107
100
|
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
hash: 1
|
103
|
+
segments:
|
104
|
+
- 1
|
105
|
+
- 0
|
106
|
+
- 11
|
109
107
|
version: 1.0.11
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: engineyard-serverside-adapter
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ~>
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 2.0.6
|
118
108
|
type: :development
|
109
|
+
version_requirements: *id006
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: engineyard-serverside-adapter
|
119
112
|
prerelease: false
|
120
|
-
|
113
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
121
114
|
none: false
|
122
|
-
requirements:
|
115
|
+
requirements:
|
123
116
|
- - ~>
|
124
|
-
- !ruby/object:Gem::Version
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
hash: 3
|
119
|
+
segments:
|
120
|
+
- 2
|
121
|
+
- 0
|
122
|
+
- 6
|
125
123
|
version: 2.0.6
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: sqlite3
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ! '>='
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
134
124
|
type: :development
|
125
|
+
version_requirements: *id007
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: sqlite3
|
135
128
|
prerelease: false
|
136
|
-
|
129
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
137
130
|
none: false
|
138
|
-
requirements:
|
139
|
-
- -
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
hash: 3
|
135
|
+
segments:
|
136
|
+
- 0
|
137
|
+
version: "0"
|
138
|
+
type: :development
|
139
|
+
version_requirements: *id008
|
142
140
|
description:
|
143
141
|
email: cloud@engineyard.com
|
144
|
-
executables:
|
142
|
+
executables:
|
145
143
|
- engineyard-serverside
|
146
144
|
extensions: []
|
145
|
+
|
147
146
|
extra_rdoc_files: []
|
148
|
-
|
147
|
+
|
148
|
+
files:
|
149
149
|
- bin/engineyard-serverside
|
150
150
|
- lib/engineyard-serverside/about.rb
|
151
151
|
- lib/engineyard-serverside/cli.rb
|
@@ -167,7 +167,6 @@ files:
|
|
167
167
|
- lib/engineyard-serverside/rails_assets.rb
|
168
168
|
- lib/engineyard-serverside/server.rb
|
169
169
|
- lib/engineyard-serverside/servers.rb
|
170
|
-
- lib/engineyard-serverside/shell/command_result.rb
|
171
170
|
- lib/engineyard-serverside/shell/formatter.rb
|
172
171
|
- lib/engineyard-serverside/shell/helpers.rb
|
173
172
|
- lib/engineyard-serverside/shell/yieldio.rb
|
@@ -390,29 +389,40 @@ files:
|
|
390
389
|
- spec/support/integration.rb
|
391
390
|
homepage: http://github.com/engineyard/engineyard-serverside
|
392
391
|
licenses: []
|
392
|
+
|
393
393
|
post_install_message:
|
394
394
|
rdoc_options: []
|
395
|
-
|
395
|
+
|
396
|
+
require_paths:
|
396
397
|
- lib
|
397
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
398
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
398
399
|
none: false
|
399
|
-
requirements:
|
400
|
-
- -
|
401
|
-
- !ruby/object:Gem::Version
|
402
|
-
|
403
|
-
|
400
|
+
requirements:
|
401
|
+
- - ">="
|
402
|
+
- !ruby/object:Gem::Version
|
403
|
+
hash: 3
|
404
|
+
segments:
|
405
|
+
- 0
|
406
|
+
version: "0"
|
407
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
404
408
|
none: false
|
405
|
-
requirements:
|
406
|
-
- -
|
407
|
-
- !ruby/object:Gem::Version
|
409
|
+
requirements:
|
410
|
+
- - ">="
|
411
|
+
- !ruby/object:Gem::Version
|
412
|
+
hash: 23
|
413
|
+
segments:
|
414
|
+
- 1
|
415
|
+
- 3
|
416
|
+
- 6
|
408
417
|
version: 1.3.6
|
409
418
|
requirements: []
|
419
|
+
|
410
420
|
rubyforge_project:
|
411
421
|
rubygems_version: 1.8.25
|
412
422
|
signing_key:
|
413
423
|
specification_version: 3
|
414
424
|
summary: A gem that deploys ruby applications on EY Cloud instances
|
415
|
-
test_files:
|
425
|
+
test_files:
|
416
426
|
- spec/basic_deploy_spec.rb
|
417
427
|
- spec/bundler_deploy_spec.rb
|
418
428
|
- spec/configuration_spec.rb
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module EY
|
2
|
-
module Serverside
|
3
|
-
class Shell
|
4
|
-
class CommandResult < Struct.new(:command, :success, :output, :server)
|
5
|
-
alias success? success
|
6
|
-
|
7
|
-
def inspect
|
8
|
-
<<-EOM
|
9
|
-
$ #{success? ? "(success)" : "(failed)"} #{command}
|
10
|
-
#{output}
|
11
|
-
EOM
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|