heroku-nav 0.1.23 → 0.1.24

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.
Files changed (4) hide show
  1. data/Rakefile +1 -1
  2. data/heroku-nav.gemspec +2 -2
  3. data/lib/heroku/nav.rb +21 -5
  4. metadata +72 -92
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ begin
21
21
  gemspec.add_dependency(%q<rest-client>, [">= 1.0"])
22
22
  gemspec.add_dependency(%q<json>, [">= 0"])
23
23
 
24
- gemspec.version = '0.1.23'
24
+ gemspec.version = '0.1.24'
25
25
  end
26
26
  rescue LoadError
27
27
  puts "Jeweler not available. Install it with: gem install jeweler"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{heroku-nav}
8
- s.version = "0.1.22"
8
+ s.version = "0.1.24"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["David Dollar", "Pedro Belo", "Raul Murciano", "Todd Matthews"]
12
- s.date = %q{2011-03-08}
12
+ s.date = %q{2011-10-10}
13
13
  s.description = %q{}
14
14
  s.email = ["david@heroku.com", "pedro@heroku.com", "raul@heroku.com", "todd@heroku.com"]
15
15
  s.extra_rdoc_files = [
@@ -34,9 +34,11 @@ module Heroku
34
34
 
35
35
  class << self
36
36
  def fetch
37
- Timeout.timeout(4) do
38
- raw = RestClient.get(resource_url, :accept => :json).to_s
39
- return JSON.parse(raw)
37
+ Timeout.timeout(10) do
38
+ retry_upto(10, :interval => 0.5) do
39
+ raw = RestClient.get(resource_url, :accept => :json).to_s
40
+ return JSON.parse(raw)
41
+ end
40
42
  end
41
43
  rescue Exception => e
42
44
  STDERR.puts "Failed to fetch the Heroku #{resource}: #{e.class.name} - #{e.message}"
@@ -59,6 +61,18 @@ module Heroku
59
61
  def html
60
62
  @@body ||= fetch['html']
61
63
  end
64
+
65
+ def retry_upto(max_retries = 1, opts = {})
66
+ yield
67
+ rescue *(opts[:rescue] || Exception)
68
+ attempt = attempt ? attempt+1 : 1
69
+ raise if (attempt == max_retries)
70
+ if interval = opts[:interval]
71
+ secs = interval.respond_to?(:call) ? interval.call(attempt) : interval
72
+ sleep(secs)
73
+ end
74
+ retry
75
+ end
62
76
  end
63
77
  end
64
78
 
@@ -100,8 +114,10 @@ module Heroku
100
114
  class Provider < Base
101
115
  class << self
102
116
  def fetch
103
- Timeout.timeout(4) do
104
- RestClient.get(resource_url).to_s
117
+ Timeout.timeout(10) do
118
+ retry_upto(10, :interval => 0.5) do
119
+ RestClient.get(resource_url).to_s
120
+ end
105
121
  end
106
122
  rescue => e
107
123
  STDERR.puts "Failed to fetch the Heroku #{resource}: #{e.class.name} - #{e.message}"
metadata CHANGED
@@ -1,14 +1,10 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: heroku-nav
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 23
9
- version: 0.1.23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.24
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - David Dollar
13
9
  - Pedro Belo
14
10
  - Raul Murciano
@@ -16,84 +12,74 @@ authors:
16
12
  autorequire:
17
13
  bindir: bin
18
14
  cert_chain: []
19
-
20
- date: 2011-10-06 00:00:00 -07:00
21
- default_executable:
22
- dependencies:
23
- - !ruby/object:Gem::Dependency
15
+ date: 2011-10-10 00:00:00.000000000Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
24
18
  name: baconmocha
25
- prerelease: false
26
- requirement: &id001 !ruby/object:Gem::Requirement
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- segments:
31
- - 0
32
- version: "0"
19
+ requirement: &2154312380 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ! '>='
23
+ - !ruby/object:Gem::Version
24
+ version: '0'
33
25
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: sinatra
37
26
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
- version: "0"
27
+ version_requirements: *2154312380
28
+ - !ruby/object:Gem::Dependency
29
+ name: sinatra
30
+ requirement: &2154311900 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
45
36
  type: :development
46
- version_requirements: *id002
47
- - !ruby/object:Gem::Dependency
48
- name: rack-test
49
37
  prerelease: false
50
- requirement: &id003 !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
- version: "0"
38
+ version_requirements: *2154311900
39
+ - !ruby/object:Gem::Dependency
40
+ name: rack-test
41
+ requirement: &2154311400 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
57
47
  type: :development
58
- version_requirements: *id003
59
- - !ruby/object:Gem::Dependency
60
- name: rest-client
61
48
  prerelease: false
62
- requirement: &id004 !ruby/object:Gem::Requirement
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- segments:
67
- - 1
68
- - 0
69
- version: "1.0"
49
+ version_requirements: *2154311400
50
+ - !ruby/object:Gem::Dependency
51
+ name: rest-client
52
+ requirement: &2154310880 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '1.0'
70
58
  type: :runtime
71
- version_requirements: *id004
72
- - !ruby/object:Gem::Dependency
73
- name: json
74
59
  prerelease: false
75
- requirement: &id005 !ruby/object:Gem::Requirement
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- segments:
80
- - 0
81
- version: "0"
60
+ version_requirements: *2154310880
61
+ - !ruby/object:Gem::Dependency
62
+ name: json
63
+ requirement: &2154310220 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
82
69
  type: :runtime
83
- version_requirements: *id005
84
- description: ""
85
- email:
70
+ prerelease: false
71
+ version_requirements: *2154310220
72
+ description: ''
73
+ email:
86
74
  - david@heroku.com
87
75
  - pedro@heroku.com
88
76
  - raul@heroku.com
89
77
  - todd@heroku.com
90
78
  executables: []
91
-
92
79
  extensions: []
93
-
94
- extra_rdoc_files:
80
+ extra_rdoc_files:
95
81
  - README.md
96
- files:
82
+ files:
97
83
  - README.md
98
84
  - Rakefile
99
85
  - heroku-nav.gemspec
@@ -101,37 +87,31 @@ files:
101
87
  - spec/api_spec.rb
102
88
  - spec/base.rb
103
89
  - spec/nav_spec.rb
104
- has_rdoc: true
105
90
  homepage: http://heroku.com
106
91
  licenses: []
107
-
108
92
  post_install_message:
109
93
  rdoc_options: []
110
-
111
- require_paths:
94
+ require_paths:
112
95
  - lib
113
- required_ruby_version: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- segments:
118
- - 0
119
- version: "0"
120
- required_rubygems_version: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- segments:
125
- - 0
126
- version: "0"
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
127
108
  requirements: []
128
-
129
109
  rubyforge_project:
130
- rubygems_version: 1.3.6
110
+ rubygems_version: 1.8.10
131
111
  signing_key:
132
112
  specification_version: 3
133
- summary: ""
134
- test_files:
113
+ summary: ''
114
+ test_files:
135
115
  - spec/api_spec.rb
136
116
  - spec/base.rb
137
117
  - spec/nav_spec.rb