heroku-api 0.3.7 → 0.3.8
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/README.md +36 -35
- data/changelog.txt +11 -0
- data/lib/heroku/api.rb +6 -1
- data/lib/heroku/api/errors.rb +2 -0
- data/lib/heroku/api/mock.rb +1 -2
- data/lib/heroku/api/mock/apps.rb +1 -0
- data/lib/heroku/api/mock/domains.rb +3 -0
- data/lib/heroku/api/version.rb +1 -1
- data/test/test_error_conditions.rb +11 -0
- metadata +10 -3
data/README.md
CHANGED
@@ -16,6 +16,7 @@ Start by creating a connection to Heroku with your credentials:
|
|
16
16
|
|
17
17
|
heroku = Heroku::API.new(:api_key => API_KEY) # use API Key
|
18
18
|
heroku = Heroku::API.new(:username => USERNAME, :password => PASSWORD) # use username and password
|
19
|
+
heroku = Heroku::API.new(:headers => {'User-Agent' => 'custom'}) # use custom header
|
19
20
|
|
20
21
|
NOTE: You can leave out the `:api_key` if `ENV['HEROKU_API_KEY']` is set instead.
|
21
22
|
|
@@ -30,39 +31,39 @@ For additional details about any of the commands, see the [API docs](http://api-
|
|
30
31
|
|
31
32
|
### Add-ons
|
32
33
|
|
33
|
-
heroku.delete_addon(
|
34
|
-
heroku.
|
35
|
-
heroku.
|
36
|
-
heroku.
|
37
|
-
heroku.
|
34
|
+
heroku.delete_addon(APP, ADD_ON) # remove the ADD_ON add-on from the app named APP
|
35
|
+
heroku.post_addon(APP, ADD_ON) # add ADD_ON add-on to an the app named APP
|
36
|
+
heroku.put_addon(APP, ADD_ON) # update the ADD_ON add-on on the app named APP
|
37
|
+
heroku.get_addons # see a listing of all available add-ons
|
38
|
+
heroku.get_addons(APP) # see listing of installed add-ons for the app named APP
|
38
39
|
|
39
40
|
### Apps
|
40
41
|
|
41
|
-
heroku.delete_app(
|
42
|
+
heroku.delete_app(APP) # delete the app named APP
|
42
43
|
heroku.get_apps # get a list of your apps
|
43
|
-
heroku.get_app(
|
44
|
+
heroku.get_app(APP) # get info about the app named APP
|
44
45
|
heroku.post_app # create an app with a generated name and the default stack
|
45
|
-
heroku.
|
46
|
-
heroku.
|
46
|
+
heroku.post_app_maintenance(APP, '1') # toggle maintenance mode for the app named APP
|
47
|
+
heroku.post_app('name' => 'app') # create an app with a specified name, APP
|
47
48
|
heroku.put_app('name' => 'myapp') # update an app to have a different name
|
48
49
|
|
49
50
|
### Collaborators
|
50
51
|
|
51
|
-
heroku.delete_collaborator(
|
52
|
-
heroku.get_collaborators(
|
53
|
-
heroku.post_collaborator(
|
52
|
+
heroku.delete_collaborator(APP, 'email@example.com') # remove 'email@example.com' collaborator from APP app
|
53
|
+
heroku.get_collaborators(APP) # list collaborators for APP app
|
54
|
+
heroku.post_collaborator(APP, 'email@example.com') # add 'email@example.com' collaborator to APP app
|
54
55
|
|
55
56
|
### Config Variables
|
56
57
|
|
57
|
-
heroku.delete_config_var(
|
58
|
-
heroku.get_config_vars(
|
59
|
-
heroku.put_config_vars(
|
58
|
+
heroku.delete_config_var(APP, KEY) # remove KEY key from APP app
|
59
|
+
heroku.get_config_vars(APP) # get list of config vars for APP app
|
60
|
+
heroku.put_config_vars(APP, KEY => 'value') # set KEY key to 'value' for APP app
|
60
61
|
|
61
62
|
### Domains
|
62
63
|
|
63
|
-
heroku.delete_domain(
|
64
|
-
heroku.get_domains(
|
65
|
-
heroku.post_domain(
|
64
|
+
heroku.delete_domain(APP, 'example.com') # remove the 'example.com' domain from the APP app
|
65
|
+
heroku.get_domains(APP) # list configured domains for the APP app
|
66
|
+
heroku.post_domain(APP, 'example.com') # add 'example.com' domain to the APP app
|
66
67
|
|
67
68
|
### Keys
|
68
69
|
|
@@ -73,31 +74,31 @@ For additional details about any of the commands, see the [API docs](http://api-
|
|
73
74
|
|
74
75
|
### Logs
|
75
76
|
|
76
|
-
heroku.get_logs(
|
77
|
+
heroku.get_logs(APP) # return logs information for APP app
|
77
78
|
|
78
79
|
### Processes
|
79
80
|
|
80
|
-
heroku.get_ps(
|
81
|
-
heroku.post_ps(
|
82
|
-
heroku.post_ps_restart(
|
83
|
-
heroku.post_ps_scale(
|
84
|
-
heroku.post_ps_stop(
|
85
|
-
heroku.post_ps_stop(
|
86
|
-
heroku.
|
87
|
-
heroku.
|
88
|
-
|
89
|
-
heroku.
|
90
|
-
|
81
|
+
heroku.get_ps(APP) # list current processes for APP app
|
82
|
+
heroku.post_ps(APP, 'command') # run 'command' command in context of APP app
|
83
|
+
heroku.post_ps_restart(APP) # restart all processes for APP app
|
84
|
+
heroku.post_ps_scale(APP, TYPE, QTY) # scale TYPE type processes to QTY for APP app
|
85
|
+
heroku.post_ps_stop(APP, 'ps' => 'web.1') # stop 'web.1' process for APP app
|
86
|
+
heroku.post_ps_stop(APP, 'type' => 'web') # stop all 'web' processes for APP app
|
87
|
+
heroku.post_ps_restart(APP, 'ps' => 'web.1') # restart 'web.1' process for APP app
|
88
|
+
heroku.put_dynos(APP, DYNOS) # set number of dynos for bamboo app APP to DYNOS
|
89
|
+
heroku.put_workers(APP, WORKERS) # set number of workers for bamboo app APP to WORKERS
|
90
|
+
heroku.post_ps_scale(APP, 'worker', WORKERS) # set number of workers for cedar app APP to WORKERS
|
91
|
+
|
91
92
|
### Releases
|
92
93
|
|
93
|
-
heroku.get_releases(
|
94
|
-
heroku.get_release(
|
95
|
-
heroku.post_release(
|
94
|
+
heroku.get_releases(APP) # list of releases for the APP app
|
95
|
+
heroku.get_release(APP, 'v#') # get details of 'v#' release for APP app
|
96
|
+
heroku.post_release(APP, 'v#') # rollback APP app to 'v#' release
|
96
97
|
|
97
98
|
### Stacks
|
98
99
|
|
99
|
-
heroku.get_stack(
|
100
|
-
heroku.put_stack(
|
100
|
+
heroku.get_stack(APP) # list available stacks
|
101
|
+
heroku.put_stack(APP, STACK) # migrate APP app to STACK stack
|
101
102
|
|
102
103
|
### User
|
103
104
|
|
data/changelog.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
0.3.8 02/27/2012
|
2
|
+
================
|
3
|
+
|
4
|
+
document custom headers
|
5
|
+
remove SHARED_DATABASE from mocks
|
6
|
+
clarify cedar scaling
|
7
|
+
clarify README examples
|
8
|
+
return more helpful error for blank app
|
9
|
+
add legacy tier to mocks
|
10
|
+
|
11
|
+
|
1
12
|
0.3.7 11/19/2012
|
2
13
|
================
|
3
14
|
|
data/lib/heroku/api.rb
CHANGED
@@ -77,7 +77,12 @@ module Heroku
|
|
77
77
|
when 401 then Heroku::API::Errors::Unauthorized
|
78
78
|
when 402 then Heroku::API::Errors::VerificationRequired
|
79
79
|
when 403 then Heroku::API::Errors::Forbidden
|
80
|
-
when 404
|
80
|
+
when 404
|
81
|
+
if error.request[:path].match /\/apps\/\/.*/
|
82
|
+
Heroku::API::Errors::NilApp
|
83
|
+
else
|
84
|
+
Heroku::API::Errors::NotFound
|
85
|
+
end
|
81
86
|
when 408 then Heroku::API::Errors::Timeout
|
82
87
|
when 422 then Heroku::API::Errors::RequestFailed
|
83
88
|
when 423 then Heroku::API::Errors::Locked
|
data/lib/heroku/api/errors.rb
CHANGED
data/lib/heroku/api/mock.rb
CHANGED
@@ -52,8 +52,7 @@ module Heroku
|
|
52
52
|
'BUNDLE_WITHOUT' => 'development:test',
|
53
53
|
'DATABASE_URL' => 'postgres://username:password@ec2-123-123-123-123.compute-1.amazonaws.com/username',
|
54
54
|
'LANG' => 'en_US.UTF-8',
|
55
|
-
'RACK_ENV' => 'production'
|
56
|
-
'SHARED_DATABASE_URL' => 'postgres://username:password@ec2-123-123-123-123.compute-1.amazonaws.com/username'
|
55
|
+
'RACK_ENV' => 'production'
|
57
56
|
}
|
58
57
|
else
|
59
58
|
{}
|
data/lib/heroku/api/mock/apps.rb
CHANGED
@@ -36,6 +36,9 @@ module Heroku
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
# stub DELETE /apps//domains/:domain
|
40
|
+
Excon.stub({:method => :delete, :path => %r{^/apps//domains/([^/]+)$} }, {:status => 404})
|
41
|
+
|
39
42
|
# stub GET /apps/:app/domains
|
40
43
|
Excon.stub(:expects => 200, :method => :get, :path => %r{^/apps/([^/]+)/domains$} ) do |params|
|
41
44
|
request_params, mock_data = parse_stub_params(params)
|
data/lib/heroku/api/version.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
|
2
|
+
|
3
|
+
class TestErrorConditions < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def test_request_without_app_returns_a_sensible_error
|
6
|
+
assert_raises(Heroku::API::Errors::NilApp) do
|
7
|
+
heroku.delete_domain("", 'example.com')
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
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.3.
|
4
|
+
version: 0.3.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: excon
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- test/test_collaborators.rb
|
120
120
|
- test/test_config_vars.rb
|
121
121
|
- test/test_domains.rb
|
122
|
+
- test/test_error_conditions.rb
|
122
123
|
- test/test_features.rb
|
123
124
|
- test/test_helper.rb
|
124
125
|
- test/test_keys.rb
|
@@ -141,12 +142,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
141
142
|
- - ! '>='
|
142
143
|
- !ruby/object:Gem::Version
|
143
144
|
version: '0'
|
145
|
+
segments:
|
146
|
+
- 0
|
147
|
+
hash: -2193435040644309504
|
144
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
149
|
none: false
|
146
150
|
requirements:
|
147
151
|
- - ! '>='
|
148
152
|
- !ruby/object:Gem::Version
|
149
153
|
version: '0'
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
hash: -2193435040644309504
|
150
157
|
requirements: []
|
151
158
|
rubyforge_project:
|
152
159
|
rubygems_version: 1.8.23
|
@@ -162,6 +169,7 @@ test_files:
|
|
162
169
|
- test/test_collaborators.rb
|
163
170
|
- test/test_config_vars.rb
|
164
171
|
- test/test_domains.rb
|
172
|
+
- test/test_error_conditions.rb
|
165
173
|
- test/test_features.rb
|
166
174
|
- test/test_helper.rb
|
167
175
|
- test/test_keys.rb
|
@@ -172,4 +180,3 @@ test_files:
|
|
172
180
|
- test/test_ssl_endpoints.rb
|
173
181
|
- test/test_stacks.rb
|
174
182
|
- test/test_user.rb
|
175
|
-
has_rdoc:
|