engineyard 1.3.7 → 1.3.10
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/engineyard/cli/recipes.rb +14 -9
- data/lib/engineyard/cli/web.rb +2 -2
- data/lib/engineyard/cli.rb +5 -5
- data/lib/engineyard/model/deployment.rb +51 -0
- data/lib/engineyard/model/environment.rb +1 -1
- data/lib/engineyard/model/instance.rb +20 -6
- data/lib/engineyard/model.rb +1 -0
- data/lib/engineyard/version.rb +1 -1
- data/spec/engineyard/model/environment_spec.rb +2 -2
- data/spec/ey/deploy_spec.rb +1 -0
- data/spec/support/fake_awsm.ru +5 -1
- metadata +76 -109
@@ -2,16 +2,19 @@ module EY
|
|
2
2
|
class CLI
|
3
3
|
class Recipes < EY::Thor
|
4
4
|
desc "apply [--environment ENVIRONMENT]",
|
5
|
-
"Run uploaded
|
5
|
+
"Run chef recipes uploaded by the 'recipes upload' command on the specified environment."
|
6
6
|
long_desc <<-DESC
|
7
7
|
This is similar to '#{banner_base} rebuild' except Engine Yard's main
|
8
8
|
configuration step is skipped.
|
9
|
+
|
10
|
+
The cookbook uploaded by the 'recipes upload' command will be run when
|
11
|
+
you run 'recipes apply'.
|
9
12
|
DESC
|
10
13
|
|
11
14
|
method_option :environment, :type => :string, :aliases => %w(-e),
|
12
15
|
:desc => "Environment in which to apply recipes"
|
13
16
|
method_option :account, :type => :string, :aliases => %w(-c),
|
14
|
-
:desc => "Name of the account
|
17
|
+
:desc => "Name of the account in which the environment can be found"
|
15
18
|
def apply
|
16
19
|
environment = fetch_environment(options[:environment], options[:account])
|
17
20
|
environment.run_custom_recipes
|
@@ -19,16 +22,18 @@ module EY
|
|
19
22
|
end
|
20
23
|
|
21
24
|
desc "upload [--environment ENVIRONMENT]",
|
22
|
-
"Upload custom chef recipes to specified environment."
|
25
|
+
"Upload custom chef recipes to specified environment so they can be applied."
|
23
26
|
long_desc <<-DESC
|
24
|
-
The current directory should contain a subdirectory named "cookbooks"
|
25
|
-
uploaded.
|
27
|
+
The current working directory should contain a subdirectory named "cookbooks"
|
28
|
+
that is the collection of recipes to be uploaded.
|
29
|
+
|
30
|
+
The uploaded cookbook will be run when executing 'recipes apply'.
|
26
31
|
DESC
|
27
32
|
|
28
33
|
method_option :environment, :type => :string, :aliases => %w(-e),
|
29
34
|
:desc => "Environment that will receive the recipes"
|
30
35
|
method_option :account, :type => :string, :aliases => %w(-c),
|
31
|
-
:desc => "Name of the account
|
36
|
+
:desc => "Name of the account in which the environment can be found"
|
32
37
|
def upload
|
33
38
|
environment = fetch_environment(options[:environment], options[:account])
|
34
39
|
environment.upload_recipes
|
@@ -36,17 +41,17 @@ module EY
|
|
36
41
|
end
|
37
42
|
|
38
43
|
desc "download [--environment ENVIRONMENT]",
|
39
|
-
"Download custom chef recipes from
|
44
|
+
"Download a copy of the custom chef recipes from this environment into the current directory."
|
40
45
|
long_desc <<-DESC
|
41
46
|
The recipes will be unpacked into a directory called "cookbooks" in the
|
42
|
-
current directory.
|
47
|
+
current directory. This is the opposite of 'recipes upload'.
|
43
48
|
|
44
49
|
If the cookbooks directory already exists, an error will be raised.
|
45
50
|
DESC
|
46
51
|
method_option :environment, :type => :string, :aliases => %w(-e),
|
47
52
|
:desc => "Environment for which to download the recipes"
|
48
53
|
method_option :account, :type => :string, :aliases => %w(-c),
|
49
|
-
:desc => "Name of the account
|
54
|
+
:desc => "Name of the account in which the environment can be found"
|
50
55
|
def download
|
51
56
|
environment = fetch_environment(options[:environment], options[:account])
|
52
57
|
environment.download_recipes
|
data/lib/engineyard/cli/web.rb
CHANGED
@@ -10,7 +10,7 @@ module EY
|
|
10
10
|
method_option :verbose, :type => :boolean, :aliases => %w(-v),
|
11
11
|
:desc => "Be verbose"
|
12
12
|
method_option :account, :type => :string, :aliases => %w(-c),
|
13
|
-
:desc => "Name of the account
|
13
|
+
:desc => "Name of the account in which the environment can be found"
|
14
14
|
def enable
|
15
15
|
app, environment = fetch_app_and_environment(options[:app], options[:environment], options[:account])
|
16
16
|
EY.ui.info "Taking down maintenance page for '#{app.name}' in '#{environment.name}'"
|
@@ -37,7 +37,7 @@ module EY
|
|
37
37
|
method_option :verbose, :type => :boolean, :aliases => %w(-v),
|
38
38
|
:desc => "Be verbose"
|
39
39
|
method_option :account, :type => :string, :aliases => %w(-c),
|
40
|
-
:desc => "Name of the account
|
40
|
+
:desc => "Name of the account in which the environment can be found"
|
41
41
|
def disable
|
42
42
|
app, environment = fetch_app_and_environment(options[:app], options[:environment], options[:account])
|
43
43
|
EY.ui.info "Putting up maintenance page for '#{app.name}' in '#{environment.name}'"
|
data/lib/engineyard/cli.rb
CHANGED
@@ -43,7 +43,7 @@ module EY
|
|
43
43
|
method_option :app, :type => :string, :aliases => %w(-a),
|
44
44
|
:desc => "Name of the application to deploy"
|
45
45
|
method_option :account, :type => :string, :aliases => %w(-c),
|
46
|
-
:desc => "Name of the account
|
46
|
+
:desc => "Name of the account in which the environment can be found"
|
47
47
|
method_option :verbose, :type => :boolean, :aliases => %w(-v),
|
48
48
|
:desc => "Be verbose"
|
49
49
|
method_option :extra_deploy_hook_options, :type => :hash, :default => {},
|
@@ -120,7 +120,7 @@ module EY
|
|
120
120
|
method_option :environment, :type => :string, :aliases => %w(-e),
|
121
121
|
:desc => "Environment to rebuild"
|
122
122
|
method_option :account, :type => :string, :aliases => %w(-c),
|
123
|
-
:desc => "Name of the account
|
123
|
+
:desc => "Name of the account in which the environment can be found"
|
124
124
|
def rebuild
|
125
125
|
environment = fetch_environment(options[:environment], options[:account])
|
126
126
|
EY.ui.debug("Rebuilding #{environment.name}")
|
@@ -138,7 +138,7 @@ module EY
|
|
138
138
|
method_option :app, :type => :string, :aliases => %w(-a),
|
139
139
|
:desc => "Name of the application to roll back"
|
140
140
|
method_option :account, :type => :string, :aliases => %w(-c),
|
141
|
-
:desc => "Name of the account
|
141
|
+
:desc => "Name of the account in which the environment can be found"
|
142
142
|
method_option :verbose, :type => :boolean, :aliases => %w(-v),
|
143
143
|
:desc => "Be verbose"
|
144
144
|
method_option :extra_deploy_hook_options, :type => :hash, :default => {},
|
@@ -168,7 +168,7 @@ module EY
|
|
168
168
|
method_option :environment, :type => :string, :aliases => %w(-e),
|
169
169
|
:desc => "Environment to ssh into"
|
170
170
|
method_option :account, :type => :string, :aliases => %w(-c),
|
171
|
-
:desc => "Name of the account
|
171
|
+
:desc => "Name of the account in which the environment can be found"
|
172
172
|
method_option :all, :type => :boolean, :aliases => %(-a),
|
173
173
|
:desc => "Run command on all servers"
|
174
174
|
method_option :app_servers, :type => :boolean,
|
@@ -231,7 +231,7 @@ module EY
|
|
231
231
|
method_option :environment, :type => :string, :aliases => %w(-e),
|
232
232
|
:desc => "Environment with the interesting logs"
|
233
233
|
method_option :account, :type => :string, :aliases => %w(-c),
|
234
|
-
:desc => "Name of the account
|
234
|
+
:desc => "Name of the account in which the environment can be found"
|
235
235
|
def logs
|
236
236
|
environment = fetch_environment(options[:environment], options[:account])
|
237
237
|
environment.logs.each do |log|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'escape'
|
2
|
+
|
3
|
+
module EY
|
4
|
+
module Model
|
5
|
+
class Deployment < ApiStruct.new(:id, :app, :created_at, :environment, :finished_at, :migration_command, :output, :ref, :successful)
|
6
|
+
def self.started(environment, app, ref, migration_command)
|
7
|
+
from_hash({
|
8
|
+
:app => app,
|
9
|
+
:environment => environment,
|
10
|
+
:migration_command => migration_command,
|
11
|
+
:ref => ref,
|
12
|
+
:created_at => Time.now.utc,
|
13
|
+
})
|
14
|
+
end
|
15
|
+
|
16
|
+
def finished(successful, output)
|
17
|
+
self.successful = successful
|
18
|
+
self.output = output
|
19
|
+
self.finished_at = Time.now.utc
|
20
|
+
post_to_appcloud!
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def post_to_appcloud!
|
26
|
+
api.request(api_uri, :method => :post, :params => params)
|
27
|
+
EY.ui.info "Deployment recorded in AppCloud"
|
28
|
+
end
|
29
|
+
|
30
|
+
def params
|
31
|
+
{:deployment => {
|
32
|
+
:created_at => created_at,
|
33
|
+
:finished_at => finished_at,
|
34
|
+
:migrate => !!migration_command,
|
35
|
+
:migrate_command => migration_command,
|
36
|
+
:output => output,
|
37
|
+
:ref => ref,
|
38
|
+
:successful => successful,
|
39
|
+
}}
|
40
|
+
end
|
41
|
+
|
42
|
+
def api_uri
|
43
|
+
"/apps/#{app.id}/environments/#{environment.id}/deployments"
|
44
|
+
end
|
45
|
+
|
46
|
+
def api
|
47
|
+
app.api
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'escape'
|
2
|
+
require 'open4'
|
2
3
|
|
3
4
|
module EY
|
4
5
|
module Model
|
@@ -19,13 +20,17 @@ module EY
|
|
19
20
|
private :adapter
|
20
21
|
|
21
22
|
def deploy(app, ref, migration_command=nil, extra_configuration=nil, verbose=false)
|
23
|
+
deployment = Deployment.started(environment, app, ref, migration_command)
|
24
|
+
|
22
25
|
deploy_command = adapter(app, verbose).deploy do |args|
|
23
26
|
args.config = extra_configuration if extra_configuration
|
24
27
|
args.migrate = migration_command if migration_command
|
25
28
|
args.ref = ref
|
26
29
|
end
|
27
30
|
|
28
|
-
|
31
|
+
successful, output = invoke_with_output(deploy_command)
|
32
|
+
deployment.finished(successful, output)
|
33
|
+
successful
|
29
34
|
end
|
30
35
|
|
31
36
|
def rollback(app, extra_configuration=nil, verbose=false)
|
@@ -62,20 +67,29 @@ module EY
|
|
62
67
|
|
63
68
|
private
|
64
69
|
|
65
|
-
def ssh(remote_command
|
70
|
+
def ssh(remote_command)
|
66
71
|
user = environment.username
|
72
|
+
out = ""
|
73
|
+
tee = lambda do |chunk|
|
74
|
+
out << chunk
|
75
|
+
$stdout << chunk
|
76
|
+
end
|
67
77
|
|
68
78
|
cmd = Escape.shell_command(%w[ssh -o StrictHostKeyChecking=no -q] << "#{user}@#{hostname}" << remote_command)
|
69
|
-
cmd << " > /dev/null" unless output
|
70
79
|
EY.ui.debug(cmd)
|
71
|
-
|
72
|
-
|
80
|
+
if ENV["NO_SSH"]
|
81
|
+
[true, "NO_SSH is set."]
|
73
82
|
else
|
74
|
-
true
|
83
|
+
status = Open4.spawn(cmd, :out => tee, :err => tee, :quiet => true)
|
84
|
+
[status.success?, out]
|
75
85
|
end
|
76
86
|
end
|
77
87
|
|
78
88
|
def invoke(action)
|
89
|
+
invoke_with_output(action).first
|
90
|
+
end
|
91
|
+
|
92
|
+
def invoke_with_output(action)
|
79
93
|
action.call do |cmd|
|
80
94
|
puts cmd if action.verbose
|
81
95
|
ssh cmd
|
data/lib/engineyard/model.rb
CHANGED
@@ -3,6 +3,7 @@ module EY
|
|
3
3
|
autoload :ApiStruct, 'engineyard/model/api_struct'
|
4
4
|
autoload :Account, 'engineyard/model/account'
|
5
5
|
autoload :App, 'engineyard/model/app'
|
6
|
+
autoload :Deployment, 'engineyard/model/deployment'
|
6
7
|
autoload :Environment, 'engineyard/model/environment'
|
7
8
|
autoload :Log, 'engineyard/model/log'
|
8
9
|
autoload :Instance, 'engineyard/model/instance'
|
data/lib/engineyard/version.rb
CHANGED
@@ -11,13 +11,13 @@ describe "EY::Model::Environment#rebuild" do
|
|
11
11
|
|
12
12
|
FakeWeb.register_uri(
|
13
13
|
:put,
|
14
|
-
"https://cloud.engineyard.com/api/v2/environments/#{env.id}/
|
14
|
+
"https://cloud.engineyard.com/api/v2/environments/#{env.id}/update_instances",
|
15
15
|
:body => ''
|
16
16
|
)
|
17
17
|
|
18
18
|
env.rebuild
|
19
19
|
|
20
|
-
FakeWeb.should have_requested(:put, "https://cloud.engineyard.com/api/v2/environments/#{env.id}/
|
20
|
+
FakeWeb.should have_requested(:put, "https://cloud.engineyard.com/api/v2/environments/#{env.id}/update_instances")
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
data/spec/ey/deploy_spec.rb
CHANGED
@@ -38,6 +38,7 @@ describe "ey deploy" do
|
|
38
38
|
|
39
39
|
def verify_ran(scenario)
|
40
40
|
@out.should match(/Beginning deploy for.*#{scenario[:application]}.*#{scenario[:environment]}/)
|
41
|
+
@out.should match(/Deployment recorded in AppCloud/)
|
41
42
|
@ssh_commands.should have_command_like(/engineyard-serverside.*deploy.*--app #{scenario[:application]}/)
|
42
43
|
end
|
43
44
|
|
data/spec/support/fake_awsm.ru
CHANGED
@@ -96,7 +96,7 @@ class FakeAwsm < Sinatra::Base
|
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
-
put "/api/v2/environments/:env_id/
|
99
|
+
put "/api/v2/environments/:env_id/update_instances" do
|
100
100
|
status(202)
|
101
101
|
""
|
102
102
|
end
|
@@ -106,6 +106,10 @@ class FakeAwsm < Sinatra::Base
|
|
106
106
|
""
|
107
107
|
end
|
108
108
|
|
109
|
+
post "/api/v2/apps/:app_id/environments/:environment_id/deployments" do
|
110
|
+
{"deployment" => params[:deployment].merge({"id" => 2, "commit" => 'a'*40})}.to_json
|
111
|
+
end
|
112
|
+
|
109
113
|
post "/api/v2/authenticate" do
|
110
114
|
if valid_user?
|
111
115
|
{"api_token" => "deadbeef", "ok" => true}.to_json
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 21
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
7
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
8
|
+
- 10
|
9
|
+
version: 1.3.10
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- EY Cloud Team
|
@@ -15,102 +14,104 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-12-28 00:00:00 -08:00
|
19
18
|
default_executable: ey
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
23
|
-
|
21
|
+
prerelease: false
|
22
|
+
name: thor
|
23
|
+
type: :runtime
|
24
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
25
|
requirements:
|
25
26
|
- - ~>
|
26
27
|
- !ruby/object:Gem::Version
|
27
|
-
hash: 43
|
28
28
|
segments:
|
29
29
|
- 0
|
30
30
|
- 14
|
31
31
|
- 6
|
32
32
|
version: 0.14.6
|
33
|
-
|
33
|
+
requirement: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
34
35
|
prerelease: false
|
36
|
+
name: rest-client
|
35
37
|
type: :runtime
|
36
|
-
version_requirements:
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
39
|
requirements:
|
41
40
|
- - ~>
|
42
41
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 7
|
44
42
|
segments:
|
45
43
|
- 1
|
46
44
|
- 4
|
47
45
|
version: "1.4"
|
48
|
-
|
46
|
+
requirement: *id002
|
47
|
+
- !ruby/object:Gem::Dependency
|
49
48
|
prerelease: false
|
49
|
+
name: highline
|
50
50
|
type: :runtime
|
51
|
-
version_requirements:
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
51
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
52
|
requirements:
|
56
53
|
- - ~>
|
57
54
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 13
|
59
55
|
segments:
|
60
56
|
- 1
|
61
57
|
- 6
|
62
58
|
- 1
|
63
59
|
version: 1.6.1
|
64
|
-
|
60
|
+
requirement: *id003
|
61
|
+
- !ruby/object:Gem::Dependency
|
65
62
|
prerelease: false
|
63
|
+
name: json_pure
|
66
64
|
type: :runtime
|
67
|
-
version_requirements:
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
65
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
66
|
requirements:
|
72
67
|
- - ">="
|
73
68
|
- !ruby/object:Gem::Version
|
74
|
-
hash: 3
|
75
69
|
segments:
|
76
70
|
- 0
|
77
71
|
version: "0"
|
78
|
-
|
72
|
+
requirement: *id004
|
73
|
+
- !ruby/object:Gem::Dependency
|
79
74
|
prerelease: false
|
75
|
+
name: escape
|
80
76
|
type: :runtime
|
81
|
-
version_requirements:
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
77
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
78
|
requirements:
|
86
79
|
- - ~>
|
87
80
|
- !ruby/object:Gem::Version
|
88
|
-
hash: 23
|
89
81
|
segments:
|
90
82
|
- 0
|
91
83
|
- 0
|
92
84
|
- 4
|
93
85
|
version: 0.0.4
|
94
|
-
|
86
|
+
requirement: *id005
|
87
|
+
- !ruby/object:Gem::Dependency
|
95
88
|
prerelease: false
|
89
|
+
name: engineyard-serverside-adapter
|
96
90
|
type: :runtime
|
97
|
-
version_requirements:
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
91
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
101
92
|
requirements:
|
102
93
|
- - "="
|
103
94
|
- !ruby/object:Gem::Version
|
104
|
-
hash: 7
|
105
95
|
segments:
|
106
96
|
- 1
|
107
97
|
- 4
|
108
98
|
- 0
|
109
99
|
version: 1.4.0
|
110
|
-
|
100
|
+
requirement: *id006
|
101
|
+
- !ruby/object:Gem::Dependency
|
111
102
|
prerelease: false
|
103
|
+
name: open4
|
112
104
|
type: :runtime
|
113
|
-
version_requirements:
|
105
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
segments:
|
110
|
+
- 1
|
111
|
+
- 0
|
112
|
+
- 1
|
113
|
+
version: 1.0.1
|
114
|
+
requirement: *id007
|
114
115
|
description: This gem allows you to deploy your rails application to the Engine Yard cloud directly from the command line.
|
115
116
|
email: cloud@engineyard.com
|
116
117
|
executables:
|
@@ -122,63 +123,33 @@ extra_rdoc_files: []
|
|
122
123
|
files:
|
123
124
|
- bin/ey
|
124
125
|
- lib/engineyard/cli.rb
|
125
|
-
- lib/engineyard/
|
126
|
+
- lib/engineyard/api.rb
|
126
127
|
- lib/engineyard/error.rb
|
127
|
-
- lib/engineyard/
|
128
|
+
- lib/engineyard/ruby_ext.rb
|
129
|
+
- lib/engineyard/cli/api.rb
|
130
|
+
- lib/engineyard/cli/web.rb
|
131
|
+
- lib/engineyard/cli/recipes.rb
|
132
|
+
- lib/engineyard/cli/ui.rb
|
133
|
+
- lib/engineyard/model/log.rb
|
134
|
+
- lib/engineyard/model/instance.rb
|
135
|
+
- lib/engineyard/model/environment.rb
|
136
|
+
- lib/engineyard/model/app.rb
|
137
|
+
- lib/engineyard/model/deployment.rb
|
138
|
+
- lib/engineyard/model/account.rb
|
139
|
+
- lib/engineyard/model/api_struct.rb
|
140
|
+
- lib/engineyard/thor.rb
|
141
|
+
- lib/engineyard/model.rb
|
142
|
+
- lib/engineyard/repo.rb
|
128
143
|
- lib/engineyard/collection/abstract.rb
|
129
144
|
- lib/engineyard/collection/apps.rb
|
130
145
|
- lib/engineyard/collection/environments.rb
|
131
146
|
- lib/engineyard/collection.rb
|
132
147
|
- lib/engineyard/config.rb
|
133
|
-
- lib/engineyard/repo.rb
|
134
|
-
- lib/engineyard/thor.rb
|
135
|
-
- lib/engineyard/api.rb
|
136
|
-
- lib/engineyard/cli/recipes.rb
|
137
|
-
- lib/engineyard/cli/web.rb
|
138
|
-
- lib/engineyard/cli/ui.rb
|
139
|
-
- lib/engineyard/cli/api.rb
|
140
148
|
- lib/engineyard/version.rb
|
141
|
-
- lib/engineyard/
|
142
|
-
- lib/engineyard/model/account.rb
|
143
|
-
- lib/engineyard/model/instance.rb
|
144
|
-
- lib/engineyard/model/api_struct.rb
|
145
|
-
- lib/engineyard/model/app.rb
|
146
|
-
- lib/engineyard/model/environment.rb
|
147
|
-
- lib/engineyard/model/log.rb
|
149
|
+
- lib/engineyard/resolver.rb
|
148
150
|
- lib/engineyard.rb
|
149
151
|
- LICENSE
|
150
152
|
- README.rdoc
|
151
|
-
- spec/support/shared_behavior.rb
|
152
|
-
- spec/support/helpers.rb
|
153
|
-
- spec/support/bundled_ey
|
154
|
-
- spec/support/ruby_ext.rb
|
155
|
-
- spec/support/git_repo.rb
|
156
|
-
- spec/support/fake_awsm.ru
|
157
|
-
- spec/engineyard/resolver_spec.rb
|
158
|
-
- spec/engineyard/api_spec.rb
|
159
|
-
- spec/engineyard/repo_spec.rb
|
160
|
-
- spec/engineyard/cli_spec.rb
|
161
|
-
- spec/engineyard/config_spec.rb
|
162
|
-
- spec/engineyard/collection/environments_spec.rb
|
163
|
-
- spec/engineyard/collection/apps_spec.rb
|
164
|
-
- spec/engineyard/cli/api_spec.rb
|
165
|
-
- spec/engineyard/model/environment_spec.rb
|
166
|
-
- spec/engineyard/model/instance_spec.rb
|
167
|
-
- spec/engineyard/model/api_struct_spec.rb
|
168
|
-
- spec/ey/rollback_spec.rb
|
169
|
-
- spec/ey/rebuild_spec.rb
|
170
|
-
- spec/ey/web/enable_spec.rb
|
171
|
-
- spec/ey/web/disable_spec.rb
|
172
|
-
- spec/ey/deploy_spec.rb
|
173
|
-
- spec/ey/ey_spec.rb
|
174
|
-
- spec/ey/ssh_spec.rb
|
175
|
-
- spec/ey/list_environments_spec.rb
|
176
|
-
- spec/ey/logs_spec.rb
|
177
|
-
- spec/ey/recipes/upload_spec.rb
|
178
|
-
- spec/ey/recipes/download_spec.rb
|
179
|
-
- spec/ey/recipes/apply_spec.rb
|
180
|
-
- spec/spec_helper.rb
|
181
|
-
- spec/engineyard_spec.rb
|
182
153
|
has_rdoc: true
|
183
154
|
homepage: http://github.com/engineyard/engineyard
|
184
155
|
licenses: []
|
@@ -189,59 +160,55 @@ rdoc_options: []
|
|
189
160
|
require_paths:
|
190
161
|
- lib
|
191
162
|
required_ruby_version: !ruby/object:Gem::Requirement
|
192
|
-
none: false
|
193
163
|
requirements:
|
194
164
|
- - ">="
|
195
165
|
- !ruby/object:Gem::Version
|
196
|
-
hash: 3
|
197
166
|
segments:
|
198
167
|
- 0
|
199
168
|
version: "0"
|
200
169
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
170
|
requirements:
|
203
171
|
- - ">="
|
204
172
|
- !ruby/object:Gem::Version
|
205
|
-
hash: 3
|
206
173
|
segments:
|
207
174
|
- 0
|
208
175
|
version: "0"
|
209
176
|
requirements: []
|
210
177
|
|
211
178
|
rubyforge_project:
|
212
|
-
rubygems_version: 1.3.
|
179
|
+
rubygems_version: 1.3.6
|
213
180
|
signing_key:
|
214
181
|
specification_version: 3
|
215
182
|
summary: Command-line deployment for the Engine Yard cloud
|
216
183
|
test_files:
|
217
|
-
- spec/support/shared_behavior.rb
|
218
|
-
- spec/support/helpers.rb
|
219
|
-
- spec/support/bundled_ey
|
220
|
-
- spec/support/ruby_ext.rb
|
221
184
|
- spec/support/git_repo.rb
|
222
185
|
- spec/support/fake_awsm.ru
|
223
|
-
- spec/
|
224
|
-
- spec/
|
225
|
-
- spec/
|
186
|
+
- spec/support/ruby_ext.rb
|
187
|
+
- spec/support/helpers.rb
|
188
|
+
- spec/support/bundled_ey
|
189
|
+
- spec/support/shared_behavior.rb
|
226
190
|
- spec/engineyard/cli_spec.rb
|
227
191
|
- spec/engineyard/config_spec.rb
|
228
|
-
- spec/engineyard/collection/environments_spec.rb
|
229
|
-
- spec/engineyard/collection/apps_spec.rb
|
230
192
|
- spec/engineyard/cli/api_spec.rb
|
193
|
+
- spec/engineyard/model/api_struct_spec.rb
|
231
194
|
- spec/engineyard/model/environment_spec.rb
|
232
195
|
- spec/engineyard/model/instance_spec.rb
|
233
|
-
- spec/engineyard/
|
196
|
+
- spec/engineyard/resolver_spec.rb
|
197
|
+
- spec/engineyard/collection/apps_spec.rb
|
198
|
+
- spec/engineyard/collection/environments_spec.rb
|
199
|
+
- spec/engineyard/repo_spec.rb
|
200
|
+
- spec/engineyard/api_spec.rb
|
201
|
+
- spec/ey/list_environments_spec.rb
|
234
202
|
- spec/ey/rollback_spec.rb
|
203
|
+
- spec/ey/logs_spec.rb
|
235
204
|
- spec/ey/rebuild_spec.rb
|
236
|
-
- spec/ey/
|
237
|
-
- spec/ey/
|
205
|
+
- spec/ey/recipes/download_spec.rb
|
206
|
+
- spec/ey/recipes/apply_spec.rb
|
207
|
+
- spec/ey/recipes/upload_spec.rb
|
238
208
|
- spec/ey/deploy_spec.rb
|
239
209
|
- spec/ey/ey_spec.rb
|
210
|
+
- spec/ey/web/disable_spec.rb
|
211
|
+
- spec/ey/web/enable_spec.rb
|
240
212
|
- spec/ey/ssh_spec.rb
|
241
|
-
- spec/ey/list_environments_spec.rb
|
242
|
-
- spec/ey/logs_spec.rb
|
243
|
-
- spec/ey/recipes/upload_spec.rb
|
244
|
-
- spec/ey/recipes/download_spec.rb
|
245
|
-
- spec/ey/recipes/apply_spec.rb
|
246
|
-
- spec/spec_helper.rb
|
247
213
|
- spec/engineyard_spec.rb
|
214
|
+
- spec/spec_helper.rb
|