heroku-api 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,10 @@
1
+ 0.1.7 05/15/2012
2
+ ================
3
+
4
+ # consolidate NotFound error handling to work more like other errors
5
+ # fixes for ps:scale mock accuracy
6
+ # fix default command for cedar web process mocks
7
+
1
8
  0.1.6 05/09/2012
2
9
  ================
3
10
 
@@ -58,10 +58,6 @@ module Heroku
58
58
  def request(params, &block)
59
59
  begin
60
60
  response = @connection.request(params, &block)
61
- rescue Excon::Errors::NotFound => error
62
- reerror = Heroku::API::Errors::NotFound.new(error.message, error.response)
63
- reerror.set_backtrace(error.backtrace)
64
- raise reerror
65
61
  rescue Excon::Errors::SocketError => error
66
62
  raise error
67
63
  rescue Excon::Errors::Error => error
@@ -69,6 +65,7 @@ module Heroku
69
65
  when 401 then Heroku::API::Errors::Unauthorized
70
66
  when 402 then Heroku::API::Errors::VerificationRequired
71
67
  when 403 then Heroku::API::Errors::Forbidden
68
+ when 404 then Heroku::API::Errors::NotFound
72
69
  when 408 then Heroku::API::Errors::Timeout
73
70
  when 422 then Heroku::API::Errors::RequestFailed
74
71
  when 423 then Heroku::API::Errors::Locked
@@ -78,7 +75,7 @@ module Heroku
78
75
 
79
76
  reerror = klass.new(error.message, error.response)
80
77
  reerror.set_backtrace(error.backtrace)
81
- raise reerror
78
+ raise(reerror)
82
79
  end
83
80
 
84
81
  if response.body && !response.body.empty?
@@ -99,6 +99,7 @@ module Heroku
99
99
  add_mock_app_addon(mock_data, app, 'logging:basic')
100
100
  if stack == 'cedar'
101
101
  add_mock_app_addon(mock_data, app, 'releases:basic')
102
+ mock_data[:ps][app].first['command'] = 'bundle exec thin start -p $PORT'
102
103
  mock_data[:ps][app].first['type'] = 'Ps'
103
104
  else
104
105
  add_mock_app_addon(mock_data, app, 'shared-database:5mb')
@@ -79,15 +79,21 @@ module Heroku
79
79
  request_params, mock_data = parse_stub_params(params)
80
80
  app, _ = request_params[:captures][:path]
81
81
  with_mock_app(mock_data, app) do |app_data|
82
- request_params[:query]
83
82
  type = request_params[:query].has_key?('type') && request_params[:query]['type']
84
83
  qty = request_params[:query].has_key?('qty') && request_params[:query]['qty']
85
84
  if app_data['stack'] == 'cedar'
86
85
  if type == 'web'
87
86
  current_qty = mock_data[:ps][app].count {|process| process['process'] =~ %r{^web\.\d+}}
88
87
 
89
- if qty >= current_qty
90
- (qty - current_qty).times do
88
+ new_qty = case qty
89
+ when /[+-]\d+/
90
+ current_qty + qty.to_i
91
+ else
92
+ qty.to_i
93
+ end
94
+
95
+ if new_qty >= current_qty
96
+ (new_qty - current_qty).times do
91
97
  max_web_id = mock_data[:ps][app].map {|process| process['process'].split('web.').last.to_i}.max
92
98
  data = mock_data[:ps][app].first.dup # copy of web.1
93
99
  data.merge({
@@ -97,15 +103,15 @@ module Heroku
97
103
  })
98
104
  mock_data[:ps][app] << data
99
105
  end
100
- elsif qty < current_qty
101
- (current_qty - qty).times do
106
+ elsif new_qty < current_qty
107
+ (current_qty - new_qty).times do
102
108
  max_web_id = mock_data[:ps][app].map {|process| process['process'].split('web.').last.to_i}.max
103
109
  process = mock_data[:ps][app].detect {|process| process['process'] == "web.#{max_web_id}"}
104
110
  mock_data[:ps][app].delete(process)
105
111
  end
106
112
  end
107
113
  {
108
- :body => qty.to_s,
114
+ :body => new_qty.to_s,
109
115
  :status => 200
110
116
  }
111
117
  else
@@ -1,5 +1,5 @@
1
1
  module Heroku
2
2
  class API
3
- VERSION = "0.1.6"
3
+ VERSION = "0.1.7"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-09 00:00:00.000000000 Z
12
+ date: 2012-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: excon
16
- requirement: &70187660259100 !ruby/object:Gem::Requirement
16
+ requirement: &70282807340220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.13.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70187660259100
24
+ version_requirements: *70282807340220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &70187660258680 !ruby/object:Gem::Requirement
27
+ requirement: &70282807339460 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70187660258680
35
+ version_requirements: *70282807339460
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70187660258220 !ruby/object:Gem::Requirement
38
+ requirement: &70282807338560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70187660258220
46
+ version_requirements: *70282807338560
47
47
  description: Ruby Client for the Heroku API
48
48
  email:
49
49
  - wesley@heroku.com