tronprint 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -80,6 +80,11 @@ module Tronprint
80
80
  !@cpu_monitor.nil?
81
81
  end
82
82
 
83
+ # Check whether an aggregator is connected
84
+ def connected?
85
+ !@aggregator.nil?
86
+ end
87
+
83
88
  # The Tronprint::Aggregator instance.
84
89
  def aggregator
85
90
  return @aggregator unless @aggregator.nil?
@@ -41,6 +41,8 @@ module Tronprint
41
41
  def process_options(options)
42
42
  if adapter == 'mongodb'
43
43
  options[:pool_size] = 3
44
+ options[:timeout] = 15
45
+ options[:op_timeout] = 10
44
46
  end
45
47
  options
46
48
  end
@@ -9,7 +9,7 @@ module Tronprint
9
9
  end
10
10
 
11
11
  def call(env)
12
- Tronprint.traffic_monitor.increment
12
+ Tronprint.traffic_monitor.increment if Tronprint.connected?
13
13
 
14
14
  @app.call(env)
15
15
  end
@@ -1,4 +1,5 @@
1
1
  require 'tronprint/statistics_formatter'
2
+ require 'timeout'
2
3
 
3
4
  # Rails helper for displaying footprint data.
4
5
  module TronprintHelper
@@ -21,38 +22,43 @@ module TronprintHelper
21
22
 
22
23
  # An informational badge displaying total energy, footprint, CO2/minute
23
24
  def footprint_badge(options = {})
24
- begin
25
- footprint = pounds_with_precision total_estimate
25
+ text = nil
26
+ if Tronprint.connected?
27
+ begin
28
+ footprint = pounds_with_precision total_estimate
26
29
 
27
- two_hr_emissions = Tronprint.statistics.
28
- emission_estimate(Time.now - 7200, Time.now).to_f
29
- rate = two_hr_emissions / 120 # kgs CO2 per minute over last 2 hours
30
- rate = rate < 0.0001 ? "< 0.0001" : pounds_with_precision(rate)
30
+ two_hr_emissions = Tronprint.statistics.
31
+ emission_estimate(Time.now - 7200, Time.now).to_f
32
+ rate = two_hr_emissions / 120 # kgs CO2 per minute over last 2 hours
33
+ rate = rate < 0.0001 ? "< 0.0001" : pounds_with_precision(rate)
31
34
 
32
- text = <<-HTML
33
- <p class="tronprint-footprint">
34
- <span class="tronprint-total-footprint">
35
- <span class="tronprint-label">Total app footprint:</span>
36
- <span class="tronprint-value">#{total_electricity.to_i}</span>
37
- <span class="tronprint-units">W</span>,
38
- <span class="tronprint-value">#{footprint}</span>
39
- <span class="tronprint-units">lbs. CO<sub>2</sub>e</span>
40
- </span>
41
- <span class="tronprint-separator">&middot;</span>
42
- <span class="tronprint-current-footprint">
43
- <span class="tronprint-label">Current footprint:</span>
44
- <span class="tronprint-value">#{rate}</span>
45
- <span class="tronprint-units">lbs. CO<sub>2</sub>e/min.</span>
46
- </span>
47
- <span class="tronprint-attribution">#{tronprint_attribution if options[:attribution]}</span>
48
- </p>
49
- HTML
50
- rescue => e
51
- text = <<-HTML
52
- <p class="tronprint-footprint">App footprint unavailable</p>
53
- HTML
35
+ text = <<-HTML
36
+ <p class="tronprint-footprint">
37
+ <span class="tronprint-total-footprint">
38
+ <span class="tronprint-label">Total app footprint:</span>
39
+ <span class="tronprint-value">#{total_electricity.to_i}</span>
40
+ <span class="tronprint-units">W</span>,
41
+ <span class="tronprint-value">#{footprint}</span>
42
+ <span class="tronprint-units">lbs. CO<sub>2</sub>e</span>
43
+ </span>
44
+ <span class="tronprint-separator">&middot;</span>
45
+ <span class="tronprint-current-footprint">
46
+ <span class="tronprint-label">Current footprint:</span>
47
+ <span class="tronprint-value">#{rate}</span>
48
+ <span class="tronprint-units">lbs. CO<sub>2</sub>e/min.</span>
49
+ </span>
50
+ <span class="tronprint-attribution">#{tronprint_attribution if options[:attribution]}</span>
51
+ </p>
52
+ HTML
53
+ rescue Timeout::Error => e
54
+ rescue => e
55
+ end
54
56
  end
55
57
 
58
+ text ||= <<-HTML
59
+ <p class="tronprint-footprint">App footprint unavailable</p>
60
+ HTML
61
+
56
62
  text.html_safe
57
63
  end
58
64
 
@@ -1,3 +1,3 @@
1
1
  module Tronprint
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.3"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'tronprint/rails/tronprint_helper'
3
+ require 'timeout'
3
4
 
4
5
  describe TronprintHelper do
5
6
  let :helper do
@@ -24,7 +25,8 @@ describe TronprintHelper do
24
25
  helper.footprint_badge.should =~ /Total app footprint/
25
26
  end
26
27
  it 'gracefully handles lost aggregator connections' do
27
- helper.stub!(:total_estimate).and_raise StandardError
28
+ module Mongo; class OperationTimeout < Timeout::Error; end; end
29
+ helper.stub!(:total_estimate).and_raise Mongo::OperationTimeout
28
30
  helper.footprint_badge.should =~ /App footprint unavailable/
29
31
  end
30
32
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Tronprint::VERSION
8
8
 
9
9
  s.authors = ['Derek Kastner']
10
- s.date = "2011-07-20"
10
+ s.date = "2011-08-18"
11
11
  s.description = %q{A gem for monitoring the carbon footprint of your ruby app}
12
12
  s.email = %q{dkastner@gmail.com}
13
13
  s.homepage = %q{http://github.com/brighterplanet/tronprint}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tronprint
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
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: 2011-07-20 00:00:00.000000000Z
12
+ date: 2011-08-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
16
- requirement: &2164404220 !ruby/object:Gem::Requirement
16
+ requirement: &2165865680 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2164404220
24
+ version_requirements: *2165865680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &2164403720 !ruby/object:Gem::Requirement
27
+ requirement: &2165865180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2164403720
35
+ version_requirements: *2165865180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: cucumber
38
- requirement: &2164403340 !ruby/object:Gem::Requirement
38
+ requirement: &2165864800 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2164403340
46
+ version_requirements: *2165864800
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bueller
49
- requirement: &2164402780 !ruby/object:Gem::Requirement
49
+ requirement: &2165864260 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.0.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2164402780
57
+ version_requirements: *2165864260
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &2164402360 !ruby/object:Gem::Requirement
60
+ requirement: &2165863840 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2164402360
68
+ version_requirements: *2165863840
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &2164401820 !ruby/object:Gem::Requirement
71
+ requirement: &2165863300 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '2.0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2164401820
79
+ version_requirements: *2165863300
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: sandbox
82
- requirement: &2164401400 !ruby/object:Gem::Requirement
82
+ requirement: &2165862880 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2164401400
90
+ version_requirements: *2165862880
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: timecop
93
- requirement: &2164400940 !ruby/object:Gem::Requirement
93
+ requirement: &2165862420 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2164400940
101
+ version_requirements: *2165862420
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: carbon
104
- requirement: &2164400440 !ruby/object:Gem::Requirement
104
+ requirement: &2165861920 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.1.1
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *2164400440
112
+ version_requirements: *2165861920
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: i18n
115
- requirement: &2164400000 !ruby/object:Gem::Requirement
115
+ requirement: &2165861480 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *2164400000
123
+ version_requirements: *2165861480
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: dkastner-moneta
126
- requirement: &2164399460 !ruby/object:Gem::Requirement
126
+ requirement: &2165860940 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: 1.1.1
132
132
  type: :runtime
133
133
  prerelease: false
134
- version_requirements: *2164399460
134
+ version_requirements: *2165860940
135
135
  description: A gem for monitoring the carbon footprint of your ruby app
136
136
  email: dkastner@gmail.com
137
137
  executables: []
@@ -188,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
188
  version: '0'
189
189
  segments:
190
190
  - 0
191
- hash: -2483952378864654912
191
+ hash: 1224380500631611824
192
192
  required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
197
  version: '0'
198
198
  segments:
199
199
  - 0
200
- hash: -2483952378864654912
200
+ hash: 1224380500631611824
201
201
  requirements: []
202
202
  rubyforge_project:
203
203
  rubygems_version: 1.8.5