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.
@@ -37,8 +37,8 @@ module EY
37
37
  end
38
38
 
39
39
  def apps_for_repo(repo)
40
- raise NoRemotesError.new(repo.path) if repo.urls.empty?
41
- apps.find_all {|a| repo.urls.include?(a.repository_uri) }
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
@@ -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.each do |environment|
93
- puts environment.name
94
- end
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 = get_apps(options[:all])
97
- if !options[:all] && apps.size > 1
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
- EY.ui.warn(NoAppError.new(repo).message) unless apps.any? || options[:all]
127
+
104
128
  EY.ui.print_envs(apps, EY.config.default_environment, options[:simple])
105
129
  end
106
130
  end
@@ -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.each do |env|
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 beta collaboration feature.
8
- We are working on letting you specify the account name to resolve this ambiguity.
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|
@@ -25,17 +25,17 @@ module EY
25
25
 
26
26
  class NoAppError < Error
27
27
  def initialize(repo)
28
- error = [%|There is no application configured for any of the following remotes:|]
29
- repo.urls.each{|url| error << %|\t#{url}| }
30
- error << %|You can add this application at #{EY.config.endpoint}|
31
- super error.join("\n")
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
- error = %|There is no app configured with the name "#{name}"|
38
- super error
38
+ super %|There is no app configured with the name "#{name}"|
39
39
  end
40
40
  end
41
41
 
@@ -23,6 +23,10 @@ module EY
23
23
  sole_environment or raise NoSingleEnvironmentError.new(self)
24
24
  end
25
25
 
26
+ def last_deployment_on(environment)
27
+ Deployment.last(self, environment, api)
28
+ end
29
+
26
30
  end
27
31
  end
28
32
  end
@@ -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 => !!migrate_command,
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
- "/apps/#{app.id}/environments/#{environment.id}/deployments"
76
+ self.class.api_root(app.id, environment.id)
51
77
  end
52
78
 
53
79
  def member_uri(path = nil)
54
- "/apps/#{app.id}/environments/#{environment.id}/deployments/#{id}#{path}"
80
+ collection_uri + "/#{id}#{path}"
55
81
  end
56
82
 
57
83
  def api
@@ -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(path=File.expand_path('.'))
9
- @path = path
10
+ def initialize(repo_path='.')
11
+ self.path = repo_path
10
12
  end
11
13
 
12
- def exists?
13
- File.directory?(File.join(@path, ".git"))
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 exists?
18
- head = File.read(File.join(@path, ".git/HEAD")).chomp
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
- lines = `git config -f #{Escape.shell_command([@path])}/.git/config --get-regexp 'remote.*.url'`.split(/\n/)
31
- lines.map { |c| c.split.last }
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
@@ -110,8 +110,8 @@ module EY
110
110
  end
111
111
 
112
112
  def filter_by_repo(candidates, repo)
113
- results = candidates.select do |c|
114
- repo.urls.include?(c[:repository_uri])
113
+ results = candidates.select do |candidate|
114
+ repo.has_remote?(candidate[:repository_uri])
115
115
  end
116
116
 
117
117
  if results.empty?
@@ -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.exists?
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.exists?
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
@@ -1,3 +1,3 @@
1
1
  module EY
2
- VERSION = '1.3.18'
2
+ VERSION = '1.3.19'
3
3
  end
@@ -2,9 +2,29 @@ require 'spec_helper'
2
2
 
3
3
  describe EY::Repo do
4
4
  before(:all) do
5
- @path = "/tmp/ey-test/.git/"
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
- def set_head(head)
21
- File.open(@path+"HEAD", "w"){|f| f.write(head) }
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 # current_branch
45
+ end
24
46
 
25
- describe "urls method" do
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.urls.should include(origin_url)
32
- @r.urls.should include(other_url)
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
 
@@ -40,7 +40,9 @@ describe EY::Resolver do
40
40
  end
41
41
 
42
42
  def repo(url)
43
- mock("repo", :urls => [url])
43
+ r = mock("repo", :has_remote? => false)
44
+ r.stub!(:has_remote?).with(url).and_return(true)
45
+ r
44
46
  end
45
47
 
46
48
  def resolve_to(expected)
@@ -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
@@ -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: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 18
10
- version: 1.3.18
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-08 00:00:00 -07:00
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
- name: thor
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
- requirement: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rest-client
33
+ name: thor
39
34
  prerelease: false
40
35
  type: :runtime
41
- version_requirements: &id002 !ruby/object:Gem::Requirement
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
- requirement: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: highline
49
+ name: rest-client
55
50
  prerelease: false
56
51
  type: :runtime
57
- version_requirements: &id003 !ruby/object:Gem::Requirement
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
- requirement: *id003
69
- - !ruby/object:Gem::Dependency
70
- name: json_pure
65
+ name: highline
71
66
  prerelease: false
72
67
  type: :runtime
73
- version_requirements: &id004 !ruby/object:Gem::Requirement
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
- requirement: *id004
83
- - !ruby/object:Gem::Dependency
84
- name: escape
79
+ name: json_pure
85
80
  prerelease: false
86
81
  type: :runtime
87
- version_requirements: &id005 !ruby/object:Gem::Requirement
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
- requirement: *id005
99
- - !ruby/object:Gem::Dependency
100
- name: engineyard-serverside-adapter
95
+ name: escape
101
96
  prerelease: false
102
97
  type: :runtime
103
- version_requirements: &id006 !ruby/object:Gem::Requirement
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
- requirement: *id006
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: &id007 !ruby/object:Gem::Requirement
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
- requirement: *id007
131
- - !ruby/object:Gem::Dependency
132
- name: rspec
127
+ name: net-ssh
133
128
  prerelease: false
134
- type: :development
135
- version_requirements: &id008 !ruby/object:Gem::Requirement
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
- requirement: *id008
147
- - !ruby/object:Gem::Dependency
148
- name: rake
143
+ name: rspec
149
144
  prerelease: false
150
145
  type: :development
151
- version_requirements: &id009 !ruby/object:Gem::Requirement
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
- requirement: *id009
161
- - !ruby/object:Gem::Dependency
162
- name: fakeweb
157
+ name: rake
163
158
  prerelease: false
164
159
  type: :development
165
- version_requirements: &id010 !ruby/object:Gem::Requirement
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
- requirement: *id010
175
- - !ruby/object:Gem::Dependency
176
- name: fakeweb-matcher
171
+ name: fakeweb
177
172
  prerelease: false
178
173
  type: :development
179
- version_requirements: &id011 !ruby/object:Gem::Requirement
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
- requirement: *id011
189
- - !ruby/object:Gem::Dependency
190
- name: fakefs
185
+ name: fakeweb-matcher
191
186
  prerelease: false
192
187
  type: :development
193
- version_requirements: &id012 !ruby/object:Gem::Requirement
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
- requirement: *id012
203
- - !ruby/object:Gem::Dependency
204
- name: bundler
199
+ name: fakefs
205
200
  prerelease: false
206
201
  type: :development
207
- version_requirements: &id013 !ruby/object:Gem::Requirement
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
- requirement: *id013
219
- - !ruby/object:Gem::Dependency
220
- name: sinatra
215
+ name: bundler
221
216
  prerelease: false
222
217
  type: :development
223
- version_requirements: &id014 !ruby/object:Gem::Requirement
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
- requirement: *id014
233
- - !ruby/object:Gem::Dependency
234
- name: realweb
229
+ name: sinatra
235
230
  prerelease: false
236
231
  type: :development
237
- version_requirements: &id015 !ruby/object:Gem::Requirement
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
- requirement: *id015
249
- - !ruby/object:Gem::Dependency
250
- name: open4
245
+ name: realweb
251
246
  prerelease: false
252
247
  type: :development
253
- version_requirements: &id016 !ruby/object:Gem::Requirement
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
- requirement: *id016
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