engineyard 1.3.18 → 1.3.19
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/api.rb +2 -2
- data/lib/engineyard/cli.rb +30 -6
- data/lib/engineyard/cli/ui.rb +32 -3
- data/lib/engineyard/collection/abstract.rb +3 -3
- data/lib/engineyard/error.rb +6 -6
- data/lib/engineyard/model/app.rb +4 -0
- data/lib/engineyard/model/deployment.rb +37 -11
- data/lib/engineyard/repo.rb +34 -13
- data/lib/engineyard/resolver.rb +2 -2
- data/lib/engineyard/thor.rb +2 -10
- data/lib/engineyard/version.rb +1 -1
- data/spec/engineyard/repo_spec.rb +29 -21
- data/spec/engineyard/resolver_spec.rb +3 -1
- data/spec/ey/status_spec.rb +22 -0
- data/spec/support/fake_awsm.ru +16 -0
- metadata +72 -70
data/lib/engineyard/api.rb
CHANGED
@@ -37,8 +37,8 @@ module EY
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def apps_for_repo(repo)
|
40
|
-
|
41
|
-
apps.find_all {|a| repo.
|
40
|
+
repo.fail_on_no_remotes!
|
41
|
+
apps.find_all {|a| repo.has_remote?(a.repository_uri) }
|
42
42
|
end
|
43
43
|
|
44
44
|
class InvalidCredentials < EY::Error; end
|
data/lib/engineyard/cli.rb
CHANGED
@@ -78,6 +78,27 @@ module EY
|
|
78
78
|
raise exists ? EnvironmentUnlinkedError.new(options[:environment]) : e
|
79
79
|
end
|
80
80
|
|
81
|
+
desc "status", "Show the deployment status of the app"
|
82
|
+
long_desc <<-DESC
|
83
|
+
Show the current status of most recent deployment of the specified
|
84
|
+
application and environment.
|
85
|
+
DESC
|
86
|
+
method_option :environment, :type => :string, :aliases => %w(-e),
|
87
|
+
:desc => "Environment where the application is deployed"
|
88
|
+
method_option :app, :type => :string, :aliases => %w(-a),
|
89
|
+
:desc => "Name of the application"
|
90
|
+
method_option :account, :type => :string, :aliases => %w(-c),
|
91
|
+
:desc => "Name of the account in which the application can be found"
|
92
|
+
def status
|
93
|
+
app, environment = fetch_app_and_environment(options[:app], options[:environment], options[:account])
|
94
|
+
deployment = app.last_deployment_on(environment)
|
95
|
+
if deployment
|
96
|
+
EY.ui.show_deployment(deployment)
|
97
|
+
else
|
98
|
+
raise EY::Error, "Application #{app.name} hass not been deployed on #{environment.name}."
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
81
102
|
desc "environments [--all]", "List environments for this app; use --all to list all environments."
|
82
103
|
long_desc <<-DESC
|
83
104
|
By default, environments for this app are displayed. The --all option will
|
@@ -89,18 +110,21 @@ module EY
|
|
89
110
|
def environments
|
90
111
|
if options[:all] && options[:simple]
|
91
112
|
# just put each env
|
92
|
-
api.environments.
|
93
|
-
|
94
|
-
|
113
|
+
puts api.environments.map {|env| env.name}
|
114
|
+
elsif options[:all]
|
115
|
+
EY.ui.print_envs(api.apps, EY.config.default_environment, options[:simple])
|
95
116
|
else
|
96
|
-
apps =
|
97
|
-
|
117
|
+
apps = api.apps_for_repo(repo)
|
118
|
+
|
119
|
+
if apps.size > 1
|
98
120
|
message = "This git repo matches multiple Applications in AppCloud:\n"
|
99
121
|
apps.each { |app| message << "\t#{app.name}\n" }
|
100
122
|
message << "The following environments contain those applications:\n\n"
|
101
123
|
EY.ui.warn(message)
|
124
|
+
elsif apps.empty?
|
125
|
+
EY.ui.warn(NoAppError.new(repo).message)
|
102
126
|
end
|
103
|
-
|
127
|
+
|
104
128
|
EY.ui.print_envs(apps, EY.config.default_environment, options[:simple])
|
105
129
|
end
|
106
130
|
end
|
data/lib/engineyard/cli/ui.rb
CHANGED
@@ -75,9 +75,7 @@ module EY
|
|
75
75
|
def print_envs(apps, default_env_name = nil, simple = false)
|
76
76
|
if simple
|
77
77
|
envs = apps.map{ |a| a.environments }
|
78
|
-
envs.flatten.map{|x| x.name}.uniq
|
79
|
-
puts env
|
80
|
-
end
|
78
|
+
puts envs.flatten.map{|x| x.name}.uniq
|
81
79
|
else
|
82
80
|
apps.each do |app|
|
83
81
|
puts "#{app.name} (#{app.account.name})"
|
@@ -101,6 +99,37 @@ module EY
|
|
101
99
|
end
|
102
100
|
end
|
103
101
|
|
102
|
+
def show_deployment(dep)
|
103
|
+
puts "# Status of last deployment of #{dep.app.account.name}/#{dep.app.name}/#{dep.environment.name}:"
|
104
|
+
puts "#"
|
105
|
+
|
106
|
+
output = []
|
107
|
+
output << ["Account", dep.app.account.name]
|
108
|
+
output << ["Application", dep.app.name]
|
109
|
+
output << ["Environment", dep.environment.name]
|
110
|
+
output << ["Input Ref", dep.ref]
|
111
|
+
output << ["Resolved Ref", dep.ref]
|
112
|
+
output << ["Commit", dep.commit || '(Unable to resolve)']
|
113
|
+
output << ["Migrate", dep.migrate]
|
114
|
+
output << ["Migrate command", dep.migrate_command] if dep.migrate
|
115
|
+
output << ["Deployed by", dep.user_name]
|
116
|
+
output << ["Created at", dep.created_at]
|
117
|
+
output << ["Finished at", dep.finished_at]
|
118
|
+
|
119
|
+
output.each do |att, val|
|
120
|
+
puts "# %-15s %s" % ["#{att}:", val.to_s]
|
121
|
+
end
|
122
|
+
puts "#"
|
123
|
+
|
124
|
+
if dep.successful?
|
125
|
+
info 'Deployment was successful.'
|
126
|
+
elsif dep.finished_at.nil?
|
127
|
+
warn 'Deployment is not finished.'
|
128
|
+
else
|
129
|
+
say_with_status('Deployment failed.', nil, :red)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
104
133
|
def print_exception(e)
|
105
134
|
if e.message.empty? || (e.message == e.class.to_s)
|
106
135
|
message = nil
|
@@ -4,9 +4,9 @@ module EY
|
|
4
4
|
module Collection
|
5
5
|
class Abstract < Array
|
6
6
|
COLLAB_MESSAGE = <<-MSG
|
7
|
-
\nThis error is due to having access to another account's resources via the
|
8
|
-
|
9
|
-
MSG
|
7
|
+
\nThis error is due to having access to another account's resources via the collaboration feature.
|
8
|
+
Specify --account ACCOUNT_NAME to resolve this ambiguity.
|
9
|
+
MSG
|
10
10
|
|
11
11
|
def named(name, account_name=nil)
|
12
12
|
candidates = find_all do |x|
|
data/lib/engineyard/error.rb
CHANGED
@@ -25,17 +25,17 @@ module EY
|
|
25
25
|
|
26
26
|
class NoAppError < Error
|
27
27
|
def initialize(repo)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
super <<-ERROR
|
29
|
+
There is no application configured for any of the following remotes:
|
30
|
+
\t#{repo ? repo.urls.join("\n\t") : "No remotes found."}
|
31
|
+
You can add this application at #{EY.config.endpoint}
|
32
|
+
ERROR
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
class InvalidAppError < Error
|
36
37
|
def initialize(name)
|
37
|
-
|
38
|
-
super error
|
38
|
+
super %|There is no app configured with the name "#{name}"|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
data/lib/engineyard/model/app.rb
CHANGED
@@ -2,7 +2,28 @@ require 'escape'
|
|
2
2
|
|
3
3
|
module EY
|
4
4
|
module Model
|
5
|
-
class Deployment < ApiStruct.new(:id, :app, :created_at, :commit, :environment, :finished_at, :migrate_command, :output, :ref, :resolved_ref, :successful)
|
5
|
+
class Deployment < ApiStruct.new(:id, :app, :created_at, :commit, :environment, :finished_at, :migrate_command, :output, :ref, :resolved_ref, :successful, :user_name)
|
6
|
+
def self.api_root(app_id, environment_id)
|
7
|
+
"/apps/#{app_id}/environments/#{environment_id}/deployments"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.last(app, environment, api)
|
11
|
+
get(app, environment, 'last', api)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.get(app, environment, id, api)
|
15
|
+
response = api.request(api_root(app.id, environment.id) + "/#{id}", :method => :get)
|
16
|
+
load_from_response app, environment, response
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.load_from_response(app, environment, response)
|
20
|
+
dep = new
|
21
|
+
dep.app = app
|
22
|
+
dep.environment = environment
|
23
|
+
dep.update_with_response(response)
|
24
|
+
dep
|
25
|
+
end
|
26
|
+
|
6
27
|
def self.started(environment, app, ref, migrate_command)
|
7
28
|
deployment = from_hash({
|
8
29
|
:app => app,
|
@@ -14,9 +35,15 @@ module EY
|
|
14
35
|
deployment
|
15
36
|
end
|
16
37
|
|
38
|
+
def migrate
|
39
|
+
!!migrate_command
|
40
|
+
end
|
41
|
+
|
42
|
+
alias successful? successful
|
43
|
+
|
17
44
|
def start
|
18
45
|
post_to_api({
|
19
|
-
:migrate =>
|
46
|
+
:migrate => migrate,
|
20
47
|
:migrate_command => migrate_command,
|
21
48
|
:output => output,
|
22
49
|
:ref => ref,
|
@@ -29,6 +56,12 @@ module EY
|
|
29
56
|
put_to_api({:successful => successful, :output => output})
|
30
57
|
end
|
31
58
|
|
59
|
+
def update_with_response(response)
|
60
|
+
response['deployment'].each do |key,val|
|
61
|
+
send("#{key}=", val) if respond_to?("#{key}=")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
32
65
|
private
|
33
66
|
|
34
67
|
def post_to_api(params)
|
@@ -39,19 +72,12 @@ module EY
|
|
39
72
|
update_with_response api.request(member_uri("/finished"), :method => :put, :params => {:deployment => params})
|
40
73
|
end
|
41
74
|
|
42
|
-
def update_with_response(response)
|
43
|
-
data = response['deployment']
|
44
|
-
data.each do |key,val|
|
45
|
-
self.send("#{key}=", val) if respond_to?("#{key}=")
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
75
|
def collection_uri
|
50
|
-
|
76
|
+
self.class.api_root(app.id, environment.id)
|
51
77
|
end
|
52
78
|
|
53
79
|
def member_uri(path = nil)
|
54
|
-
"
|
80
|
+
collection_uri + "/#{id}#{path}"
|
55
81
|
end
|
56
82
|
|
57
83
|
def api
|
data/lib/engineyard/repo.rb
CHANGED
@@ -1,34 +1,55 @@
|
|
1
|
+
require 'engineyard/error'
|
1
2
|
require 'escape'
|
3
|
+
require 'pathname'
|
2
4
|
|
3
5
|
module EY
|
4
6
|
class Repo
|
5
7
|
|
6
8
|
attr_reader :path
|
7
9
|
|
8
|
-
def initialize(
|
9
|
-
|
10
|
+
def initialize(repo_path='.')
|
11
|
+
self.path = repo_path
|
10
12
|
end
|
11
13
|
|
12
|
-
def
|
13
|
-
|
14
|
+
def path=(new_path)
|
15
|
+
@path = Pathname.new(new_path).expand_path
|
16
|
+
end
|
17
|
+
|
18
|
+
def exist?
|
19
|
+
dotgit.directory?
|
14
20
|
end
|
15
21
|
|
16
22
|
def current_branch
|
17
|
-
if
|
18
|
-
head
|
19
|
-
if head.gsub!("ref: refs/heads/", "")
|
20
|
-
head
|
21
|
-
else
|
22
|
-
nil
|
23
|
-
end
|
23
|
+
if exist? && (head = dotgit("HEAD").read.chomp) && head.gsub!("ref: refs/heads/", "")
|
24
|
+
head
|
24
25
|
else
|
25
26
|
nil
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
29
30
|
def urls
|
30
|
-
|
31
|
-
|
31
|
+
@urls ||= config('remote.*.url').map { |c| c.split.last }
|
32
|
+
end
|
33
|
+
|
34
|
+
def has_remote?(repository_uri)
|
35
|
+
urls.include?(repository_uri)
|
36
|
+
end
|
37
|
+
|
38
|
+
def fail_on_no_remotes!
|
39
|
+
if urls.empty?
|
40
|
+
raise NoRemotesError.new(path)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def dotgit(child='')
|
47
|
+
path.join('.git', child)
|
48
|
+
end
|
49
|
+
|
50
|
+
def config(pattern)
|
51
|
+
config_file = Escape.shell_command([dotgit('config').to_s])
|
52
|
+
`git config -f #{config_file} --get-regexp '#{pattern}'`.split(/\n/)
|
32
53
|
end
|
33
54
|
|
34
55
|
end # Repo
|
data/lib/engineyard/resolver.rb
CHANGED
@@ -110,8 +110,8 @@ module EY
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def filter_by_repo(candidates, repo)
|
113
|
-
results = candidates.select do |
|
114
|
-
repo.
|
113
|
+
results = candidates.select do |candidate|
|
114
|
+
repo.has_remote?(candidate[:repository_uri])
|
115
115
|
end
|
116
116
|
|
117
117
|
if results.empty?
|
data/lib/engineyard/thor.rb
CHANGED
@@ -17,7 +17,7 @@ module EY
|
|
17
17
|
:environment_name => environment_name,
|
18
18
|
:account_name => account_name
|
19
19
|
}
|
20
|
-
options.merge! :repo => repo if repo.
|
20
|
+
options.merge! :repo => repo if repo.exist?
|
21
21
|
api.resolver.environment(options)
|
22
22
|
end
|
23
23
|
|
@@ -27,18 +27,10 @@ module EY
|
|
27
27
|
:environment_name => environment_name,
|
28
28
|
:account_name => account_name
|
29
29
|
}
|
30
|
-
options.merge! :repo => repo if repo.
|
30
|
+
options.merge! :repo => repo if repo.exist?
|
31
31
|
api.resolver.app_and_environment(options)
|
32
32
|
end
|
33
33
|
|
34
|
-
def get_apps(all_apps = false)
|
35
|
-
if all_apps
|
36
|
-
api.apps
|
37
|
-
else
|
38
|
-
api.apps_for_repo(repo)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
34
|
end # UtilityMethods
|
43
35
|
|
44
36
|
class Thor < ::Thor
|
data/lib/engineyard/version.rb
CHANGED
@@ -2,9 +2,29 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe EY::Repo do
|
4
4
|
before(:all) do
|
5
|
-
|
5
|
+
FakeFS.deactivate!
|
6
|
+
@path = Pathname.new("/tmp/ey-test/.git/")
|
6
7
|
@r = EY::Repo.new("/tmp/ey-test")
|
7
8
|
end
|
9
|
+
after(:all) { FakeFS.activate! }
|
10
|
+
after(:each) { clear_urls }
|
11
|
+
|
12
|
+
def set_head(head)
|
13
|
+
@path.join("HEAD").open('w') {|f| f.write(head) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def config_path
|
17
|
+
@path.join("config")
|
18
|
+
end
|
19
|
+
|
20
|
+
def set_url(url, remote)
|
21
|
+
system("mkdir -p #{@path} && cd #{@path} && git init -q")
|
22
|
+
system("git config -f #{config_path} remote.#{remote}.url #{url}")
|
23
|
+
end
|
24
|
+
|
25
|
+
def clear_urls
|
26
|
+
system("rm -rf #{config_path}")
|
27
|
+
end
|
8
28
|
|
9
29
|
describe "current_branch method" do
|
10
30
|
it "returns the name of the current branch" do
|
@@ -16,34 +36,22 @@ describe EY::Repo do
|
|
16
36
|
set_head "20bf478ab6a91ec5771130aa4c8cfd3d150c4146"
|
17
37
|
@r.current_branch.should be_nil
|
18
38
|
end
|
39
|
+
end # current_branch
|
19
40
|
|
20
|
-
|
21
|
-
|
41
|
+
describe "#fail_on_no_remotes!" do
|
42
|
+
it "raises when there are no remotes" do
|
43
|
+
lambda { @r.fail_on_no_remotes! }.should raise_error(EY::NoRemotesError)
|
22
44
|
end
|
23
|
-
end
|
45
|
+
end
|
24
46
|
|
25
|
-
describe "
|
47
|
+
describe "#has_remote?" do
|
26
48
|
it "returns the urls of the remotes" do
|
27
49
|
origin_url = "git://github.com/engineyard/engineyard.git"
|
28
50
|
other_url = "git@github.com:engineyard/engineyard.git"
|
29
51
|
set_url origin_url, "origin"
|
30
52
|
set_url other_url, "other"
|
31
|
-
@r.
|
32
|
-
@r.
|
33
|
-
end
|
34
|
-
|
35
|
-
def config_path
|
36
|
-
@path+"config"
|
37
|
-
end
|
38
|
-
|
39
|
-
# This has to all shell out because FakeFS is enabled
|
40
|
-
def set_url(url, remote)
|
41
|
-
system("mkdir -p #{@path} && cd #{@path} && git init -q")
|
42
|
-
system("git config -f #{config_path} remote.#{remote}.url #{url}")
|
43
|
-
end
|
44
|
-
|
45
|
-
def clear_urls
|
46
|
-
system("rm -rf #{config_path}")
|
53
|
+
@r.should be_has_remote(origin_url)
|
54
|
+
@r.should be_has_remote(other_url)
|
47
55
|
end
|
48
56
|
end # url
|
49
57
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "ey environments" do
|
4
|
+
|
5
|
+
given "integration"
|
6
|
+
|
7
|
+
before(:all) do
|
8
|
+
api_scenario "one app, many environments"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "outputs the status of the deployment" do
|
12
|
+
ey %w[status -e giblets]
|
13
|
+
@out.should =~ /Application:\s+rails232app/
|
14
|
+
@out.should =~ /Environment:\s+giblets/
|
15
|
+
@out.should =~ /Ref:\s+HEAD/
|
16
|
+
@out.should =~ /Resolved Ref:\s+HEAD/
|
17
|
+
@out.should =~ /Deployed by:\s+User/
|
18
|
+
@out.should =~ /Created at:/
|
19
|
+
@out.should =~ /Finished at:/
|
20
|
+
@out.should =~ /Deployment was successful/
|
21
|
+
end
|
22
|
+
end
|
data/spec/support/fake_awsm.ru
CHANGED
@@ -100,6 +100,22 @@ class FakeAwsm < Sinatra::Base
|
|
100
100
|
""
|
101
101
|
end
|
102
102
|
|
103
|
+
get "/api/v2/apps/:app_id/environments/:environment_id/deployments/last" do
|
104
|
+
{
|
105
|
+
"deployment" => {
|
106
|
+
"id" => 3,
|
107
|
+
"ref" => "HEAD",
|
108
|
+
"resolved_ref" => "HEAD",
|
109
|
+
"commit" => 'a'*40,
|
110
|
+
"user_name" => "User",
|
111
|
+
"migrate_command" => "rake db:migrate --trace",
|
112
|
+
"created_at" => Time.now.utc - 3600,
|
113
|
+
"finished_at" => Time.now.utc - 3400,
|
114
|
+
"successful" => true,
|
115
|
+
}
|
116
|
+
}.to_json
|
117
|
+
end
|
118
|
+
|
103
119
|
post "/api/v2/apps/:app_id/environments/:environment_id/deployments" do
|
104
120
|
{"deployment" => params[:deployment].merge({"id" => 2, "commit" => 'a'*40, "resolved_ref" => "resolved-#{params[:deployment][:ref]}"})}.to_json
|
105
121
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
9
|
+
- 19
|
10
|
+
version: 1.3.19
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- EY Cloud Team
|
@@ -15,14 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-23 00:00:00 -07:00
|
19
19
|
default_executable: ey
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
23
|
-
prerelease: false
|
24
|
-
type: :runtime
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
23
|
none: false
|
27
24
|
requirements:
|
28
25
|
- - ~>
|
@@ -33,12 +30,12 @@ dependencies:
|
|
33
30
|
- 14
|
34
31
|
- 6
|
35
32
|
version: 0.14.6
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rest-client
|
33
|
+
name: thor
|
39
34
|
prerelease: false
|
40
35
|
type: :runtime
|
41
|
-
version_requirements:
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
39
|
none: false
|
43
40
|
requirements:
|
44
41
|
- - ~>
|
@@ -49,12 +46,12 @@ dependencies:
|
|
49
46
|
- 6
|
50
47
|
- 0
|
51
48
|
version: 1.6.0
|
52
|
-
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: highline
|
49
|
+
name: rest-client
|
55
50
|
prerelease: false
|
56
51
|
type: :runtime
|
57
|
-
version_requirements:
|
52
|
+
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
55
|
none: false
|
59
56
|
requirements:
|
60
57
|
- - ~>
|
@@ -65,12 +62,12 @@ dependencies:
|
|
65
62
|
- 6
|
66
63
|
- 1
|
67
64
|
version: 1.6.1
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: json_pure
|
65
|
+
name: highline
|
71
66
|
prerelease: false
|
72
67
|
type: :runtime
|
73
|
-
version_requirements:
|
68
|
+
version_requirements: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
74
71
|
none: false
|
75
72
|
requirements:
|
76
73
|
- - ">="
|
@@ -79,12 +76,12 @@ dependencies:
|
|
79
76
|
segments:
|
80
77
|
- 0
|
81
78
|
version: "0"
|
82
|
-
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: escape
|
79
|
+
name: json_pure
|
85
80
|
prerelease: false
|
86
81
|
type: :runtime
|
87
|
-
version_requirements:
|
82
|
+
version_requirements: *id004
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
88
85
|
none: false
|
89
86
|
requirements:
|
90
87
|
- - ~>
|
@@ -95,12 +92,12 @@ dependencies:
|
|
95
92
|
- 0
|
96
93
|
- 4
|
97
94
|
version: 0.0.4
|
98
|
-
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: engineyard-serverside-adapter
|
95
|
+
name: escape
|
101
96
|
prerelease: false
|
102
97
|
type: :runtime
|
103
|
-
version_requirements:
|
98
|
+
version_requirements: *id005
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
104
101
|
none: false
|
105
102
|
requirements:
|
106
103
|
- - "="
|
@@ -111,12 +108,12 @@ dependencies:
|
|
111
108
|
- 4
|
112
109
|
- 1
|
113
110
|
version: 1.4.1
|
114
|
-
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: net-ssh
|
111
|
+
name: engineyard-serverside-adapter
|
117
112
|
prerelease: false
|
118
113
|
type: :runtime
|
119
|
-
version_requirements:
|
114
|
+
version_requirements: *id006
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
120
117
|
none: false
|
121
118
|
requirements:
|
122
119
|
- - ~>
|
@@ -127,12 +124,12 @@ dependencies:
|
|
127
124
|
- 1
|
128
125
|
- 0
|
129
126
|
version: 2.1.0
|
130
|
-
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: rspec
|
127
|
+
name: net-ssh
|
133
128
|
prerelease: false
|
134
|
-
type: :
|
135
|
-
version_requirements:
|
129
|
+
type: :runtime
|
130
|
+
version_requirements: *id007
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
136
133
|
none: false
|
137
134
|
requirements:
|
138
135
|
- - "="
|
@@ -143,12 +140,12 @@ dependencies:
|
|
143
140
|
- 3
|
144
141
|
- 0
|
145
142
|
version: 1.3.0
|
146
|
-
|
147
|
-
- !ruby/object:Gem::Dependency
|
148
|
-
name: rake
|
143
|
+
name: rspec
|
149
144
|
prerelease: false
|
150
145
|
type: :development
|
151
|
-
version_requirements:
|
146
|
+
version_requirements: *id008
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
152
149
|
none: false
|
153
150
|
requirements:
|
154
151
|
- - ">="
|
@@ -157,12 +154,12 @@ dependencies:
|
|
157
154
|
segments:
|
158
155
|
- 0
|
159
156
|
version: "0"
|
160
|
-
|
161
|
-
- !ruby/object:Gem::Dependency
|
162
|
-
name: fakeweb
|
157
|
+
name: rake
|
163
158
|
prerelease: false
|
164
159
|
type: :development
|
165
|
-
version_requirements:
|
160
|
+
version_requirements: *id009
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
166
163
|
none: false
|
167
164
|
requirements:
|
168
165
|
- - ">="
|
@@ -171,12 +168,12 @@ dependencies:
|
|
171
168
|
segments:
|
172
169
|
- 0
|
173
170
|
version: "0"
|
174
|
-
|
175
|
-
- !ruby/object:Gem::Dependency
|
176
|
-
name: fakeweb-matcher
|
171
|
+
name: fakeweb
|
177
172
|
prerelease: false
|
178
173
|
type: :development
|
179
|
-
version_requirements:
|
174
|
+
version_requirements: *id010
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
180
177
|
none: false
|
181
178
|
requirements:
|
182
179
|
- - ">="
|
@@ -185,12 +182,12 @@ dependencies:
|
|
185
182
|
segments:
|
186
183
|
- 0
|
187
184
|
version: "0"
|
188
|
-
|
189
|
-
- !ruby/object:Gem::Dependency
|
190
|
-
name: fakefs
|
185
|
+
name: fakeweb-matcher
|
191
186
|
prerelease: false
|
192
187
|
type: :development
|
193
|
-
version_requirements:
|
188
|
+
version_requirements: *id011
|
189
|
+
- !ruby/object:Gem::Dependency
|
190
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
194
191
|
none: false
|
195
192
|
requirements:
|
196
193
|
- - ">="
|
@@ -199,12 +196,12 @@ dependencies:
|
|
199
196
|
segments:
|
200
197
|
- 0
|
201
198
|
version: "0"
|
202
|
-
|
203
|
-
- !ruby/object:Gem::Dependency
|
204
|
-
name: bundler
|
199
|
+
name: fakefs
|
205
200
|
prerelease: false
|
206
201
|
type: :development
|
207
|
-
version_requirements:
|
202
|
+
version_requirements: *id012
|
203
|
+
- !ruby/object:Gem::Dependency
|
204
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
208
205
|
none: false
|
209
206
|
requirements:
|
210
207
|
- - ~>
|
@@ -215,12 +212,12 @@ dependencies:
|
|
215
212
|
- 0
|
216
213
|
- 0
|
217
214
|
version: 1.0.0
|
218
|
-
|
219
|
-
- !ruby/object:Gem::Dependency
|
220
|
-
name: sinatra
|
215
|
+
name: bundler
|
221
216
|
prerelease: false
|
222
217
|
type: :development
|
223
|
-
version_requirements:
|
218
|
+
version_requirements: *id013
|
219
|
+
- !ruby/object:Gem::Dependency
|
220
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
224
221
|
none: false
|
225
222
|
requirements:
|
226
223
|
- - ">="
|
@@ -229,12 +226,12 @@ dependencies:
|
|
229
226
|
segments:
|
230
227
|
- 0
|
231
228
|
version: "0"
|
232
|
-
|
233
|
-
- !ruby/object:Gem::Dependency
|
234
|
-
name: realweb
|
229
|
+
name: sinatra
|
235
230
|
prerelease: false
|
236
231
|
type: :development
|
237
|
-
version_requirements:
|
232
|
+
version_requirements: *id014
|
233
|
+
- !ruby/object:Gem::Dependency
|
234
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
238
235
|
none: false
|
239
236
|
requirements:
|
240
237
|
- - ~>
|
@@ -245,12 +242,12 @@ dependencies:
|
|
245
242
|
- 1
|
246
243
|
- 6
|
247
244
|
version: 0.1.6
|
248
|
-
|
249
|
-
- !ruby/object:Gem::Dependency
|
250
|
-
name: open4
|
245
|
+
name: realweb
|
251
246
|
prerelease: false
|
252
247
|
type: :development
|
253
|
-
version_requirements:
|
248
|
+
version_requirements: *id015
|
249
|
+
- !ruby/object:Gem::Dependency
|
250
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
254
251
|
none: false
|
255
252
|
requirements:
|
256
253
|
- - ~>
|
@@ -261,7 +258,10 @@ dependencies:
|
|
261
258
|
- 0
|
262
259
|
- 1
|
263
260
|
version: 1.0.1
|
264
|
-
|
261
|
+
name: open4
|
262
|
+
prerelease: false
|
263
|
+
type: :development
|
264
|
+
version_requirements: *id016
|
265
265
|
description: This gem allows you to deploy your rails application to the Engine Yard cloud directly from the command line.
|
266
266
|
email: cloud@engineyard.com
|
267
267
|
executables:
|
@@ -322,6 +322,7 @@ files:
|
|
322
322
|
- spec/ey/recipes/upload_spec.rb
|
323
323
|
- spec/ey/rollback_spec.rb
|
324
324
|
- spec/ey/ssh_spec.rb
|
325
|
+
- spec/ey/status_spec.rb
|
325
326
|
- spec/ey/web/disable_spec.rb
|
326
327
|
- spec/ey/web/enable_spec.rb
|
327
328
|
- spec/spec_helper.rb
|
@@ -402,6 +403,7 @@ test_files:
|
|
402
403
|
- spec/ey/recipes/upload_spec.rb
|
403
404
|
- spec/ey/rollback_spec.rb
|
404
405
|
- spec/ey/ssh_spec.rb
|
406
|
+
- spec/ey/status_spec.rb
|
405
407
|
- spec/ey/web/disable_spec.rb
|
406
408
|
- spec/ey/web/enable_spec.rb
|
407
409
|
- spec/spec_helper.rb
|