lodging 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
@@ -7,9 +7,9 @@ Feature: Lodging Committee Calculations
|
|
7
7
|
Then the committee should have used quorum "default"
|
8
8
|
And the conclusion of the committee should be "1"
|
9
9
|
|
10
|
-
Scenario:
|
10
|
+
Scenario: Duration committee from default
|
11
11
|
Given a lodging emitter
|
12
|
-
When the "
|
12
|
+
When the "duration" committee is calculated
|
13
13
|
Then the committee should have used quorum "default"
|
14
14
|
And the conclusion of the committee should be "1"
|
15
15
|
|
@@ -11,8 +11,8 @@ Feature: Lodging Emissions Calculations
|
|
11
11
|
When emissions are calculated
|
12
12
|
Then the emission value should be within "0.1" kgs of "68.7"
|
13
13
|
|
14
|
-
Scenario: Calculations starting from
|
15
|
-
Given a lodging has "
|
14
|
+
Scenario: Calculations starting from duration
|
15
|
+
Given a lodging has "duration" of "5"
|
16
16
|
When emissions are calculated
|
17
17
|
Then the emission value should be within "0.1" kgs of "68.7"
|
18
18
|
|
@@ -31,23 +31,23 @@ Feature: Lodging Emissions Calculations
|
|
31
31
|
When emissions are calculated
|
32
32
|
Then the emission value should be within "0.1" kgs of "5.8"
|
33
33
|
|
34
|
-
Scenario: Calculations starting from rooms,
|
34
|
+
Scenario: Calculations starting from rooms, duration, and lodging class
|
35
35
|
Given a lodging has "rooms" of "2"
|
36
|
-
And it has "
|
36
|
+
And it has "duration" of "2"
|
37
37
|
And it has "lodging_class.name" of "Luxury Hotel"
|
38
38
|
When emissions are calculated
|
39
39
|
Then the emission value should be within "0.1" kgs of "110.0"
|
40
40
|
|
41
|
-
Scenario: Calculations starting from rooms,
|
41
|
+
Scenario: Calculations starting from rooms, duration, and state
|
42
42
|
Given a lodging has "rooms" of "2"
|
43
|
-
And it has "
|
43
|
+
And it has "duration" of "2"
|
44
44
|
And it has "state.postal_abbreviation" of "CA"
|
45
45
|
When emissions are calculated
|
46
46
|
Then the emission value should be within "0.1" kgs of "40.0"
|
47
47
|
|
48
|
-
Scenario: Calculations starting from rooms,
|
48
|
+
Scenario: Calculations starting from rooms, duration, and zip code
|
49
49
|
Given a lodging has "rooms" of "2"
|
50
|
-
And it has "
|
50
|
+
And it has "duration" of "2"
|
51
51
|
And it has "zip_code.name" of "94122"
|
52
52
|
When emissions are calculated
|
53
53
|
Then the emission value should be within "0.1" kgs of "23.3"
|
data/lib/lodging/carbon_model.rb
CHANGED
@@ -2,39 +2,66 @@
|
|
2
2
|
# See LICENSE for details.
|
3
3
|
# Contact Brighter Planet for dual-license arrangements.
|
4
4
|
|
5
|
-
|
5
|
+
## Lodging carbon model
|
6
|
+
# This model is used by [Brighter Planet](http://brighterplanet.com)'s carbon emission [web service](http://carbon.brighterplanet.com) to estimate the **greenhouse gas emissions of a lodging** (e.g. a hotel stay).
|
7
|
+
#
|
8
|
+
##### Calculations
|
9
|
+
# The final estimate is the result of the **calculations** detailed below. These calculations are performed in reverse order, starting with the last calculation listed and finishing with the `emission` calculation. Each calculation is named according to the value it returns.
|
10
|
+
#
|
11
|
+
##### Methods
|
12
|
+
# To accomodate varying client input, each calculation may have one or more **methods**. These are listed under each calculation in order from most to least preferred. Each method is named according to the values it requires. If any of these values is not available the method will be ignored. If all the methods for a calculation are ignored, the calculation will not return a value. "Default" methods do not require any values, and so a calculation with a default method will always return a value.
|
13
|
+
#
|
14
|
+
##### Standard compliance
|
15
|
+
# Each method lists any established calculation standards with which it **complies**. When compliance with a standard is requested, all methods that do not comply with that standard are ignored. This means that any values a particular method requires will have been calculated using a compliant method, because those are the only methods available. If any value did not have a compliant method in its calculation then it would be undefined, and the current method would have been ignored.
|
16
|
+
#
|
17
|
+
##### Collaboration
|
18
|
+
# Contributions to this carbon model are actively encouraged and warmly welcomed. This library includes a comprehensive test suite to ensure that your changes do not cause regressions. All changes should include test coverage for new functionality. Please see [sniff](http://github.com/brighterplanet/sniff#readme), our emitter testing framework, for more information.
|
6
19
|
module BrighterPlanet
|
7
20
|
module Lodging
|
8
21
|
module CarbonModel
|
9
22
|
def self.included(base)
|
10
23
|
base.decide :emission, :with => :characteristics do
|
11
|
-
|
12
|
-
|
13
|
-
|
24
|
+
### Emission calculation
|
25
|
+
# Returns the `emission` estimate (*kg CO<sub>2</sub>e*).
|
26
|
+
committee :emission do
|
27
|
+
#### Emission from rooms, duration, and emission factor
|
28
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
29
|
+
#
|
30
|
+
# Multiplies `rooms` by `duration` and the `emission factor` (*kg CO<sub>2</sub>e / room-night*) to give (*kg CO<sub>2</sub>e).
|
31
|
+
quorum 'from rooms, duration, and emission factor', :needs => [:rooms, :duration, :emission_factor] do |characteristics|
|
32
|
+
characteristics[:rooms] * characteristics[:duration] * characteristics[:emission_factor]
|
14
33
|
end
|
15
34
|
|
35
|
+
#### Default emission
|
36
|
+
# **Complies:**
|
37
|
+
#
|
38
|
+
# Displays an error message if the previous method fails.
|
16
39
|
quorum 'default' do
|
17
40
|
raise "The emission committee's default quorum should never be called."
|
18
41
|
end
|
19
42
|
end
|
20
43
|
|
21
|
-
|
44
|
+
### Emission factor calculation
|
45
|
+
# Returns the `emission factor` (*kg CO<sub>2</sub>e / room-night*)
|
46
|
+
committee :emission_factor do
|
47
|
+
#### Emission factor from fuel intensities and eGRID
|
48
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
49
|
+
#
|
50
|
+
# - Looks up the [natural gas](http://data.brighterplanet.com/fuels) emission factor (*kg CO<sub>2</sub>e / cubic m*)
|
51
|
+
# - Looks up the [fuel oil](http://data.brighterplanet.com/fuels) emission factor (*kg CO<sub>2</sub>e / l*)
|
52
|
+
# - Looks up the [eGRID subregion](http://data.brighterplanet.com/egrid_subregions) electricity emission factor
|
53
|
+
# - Looks up the [eGRID region](http://data.brighterplanet.com/egrid_regions) electricity loss factor
|
54
|
+
# - Adjusts the electricity emission factor upwards by dividing by 1 - the electricity loss factor
|
55
|
+
# - Divides the natural gas emission factor (*kg CO<sub>2</sub>e / cubic m*) by the natural gas energy content (38,339,000 *J / cubic m*) to give an energy-based natural gas emission factor (*kg CO<sub>2</sub>e / J*)
|
56
|
+
# - Divides the fuel oil emission factor (*kg CO<sub>2</sub>e / l*) by the fuel oil energy content (38,655,000 *J / l*) to give an energy-based fuel oil emission factor (*kg CO<sub>2</sub>e / J*)
|
57
|
+
# - Divides the energy-based natural gas emission factor by 0.817 and the energy-based fuel oil emission factor by 0.846, adds these together and divides by 2, and divides by 0.95. This gives a district heat emission factor (*kg CO<sub>2</sub>e / J*) based on the assumption that district heat is produced by 50% natural gas and 50% fuel oil, natural gas boilers are 81.7% efficient, fuel oil boilers are 84.6% efficient, and transmission losses are 5%.
|
58
|
+
# - Multiplies `natural gas intensity` by the natural gas emission factor, `fuel oil intensity` by the fuel oil emission factor, `electricity intensity` by the electricity emission factor, and `district heat intensity` by the district heat emission factor
|
59
|
+
# - Adds these together
|
22
60
|
quorum 'from fuel intensities and eGRID', :needs => [:natural_gas_intensity, :fuel_oil_intensity, :electricity_intensity, :district_heat_intensity, :egrid_subregion, :egrid_region] do |characteristics|
|
23
61
|
natural_gas = FuelType.find_by_name "Commercial Natural Gas"
|
24
62
|
fuel_oil = FuelType.find_by_name "Distillate Fuel Oil 2"
|
25
|
-
|
26
|
-
# FIXME TODO won't need this once we convert emission factors to co2 / unit energy
|
27
|
-
# kg / J kg / cubic m J / cubic m
|
28
63
|
natural_gas_energy_ef = natural_gas.emission_factor / 38_339_000
|
29
|
-
|
30
|
-
# FIXME TODO won't need this once we convert emission factors to co2 / unit energy
|
31
|
-
# kg / J kg / l J / l
|
32
64
|
fuel_oil_energy_ef = fuel_oil.emission_factor / 38_655_000
|
33
|
-
|
34
|
-
# based on CA-CP calculator
|
35
|
-
# assume district heat is 50% natural gas 50% distillate fuel
|
36
|
-
# assume natural gas boilers 81.7% efficient; fuel oil boilers 84.6% efficient
|
37
|
-
# assume 5% transmission loss
|
38
65
|
district_heat_emission_factor = (((natural_gas_energy_ef / 0.817) / 2) + ((fuel_oil_energy_ef / 0.846) / 2)) / 0.95
|
39
66
|
|
40
67
|
(characteristics[:natural_gas_intensity] * natural_gas.emission_factor) +
|
@@ -44,89 +71,191 @@ module BrighterPlanet
|
|
44
71
|
end
|
45
72
|
end
|
46
73
|
|
47
|
-
|
74
|
+
### Natural gas intensity calculation
|
75
|
+
# Returns the `natural gas intensity` (*cubic m / room-night*).
|
76
|
+
committee :natural_gas_intensity do
|
77
|
+
#### Natural gas intensity from census division
|
78
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
79
|
+
#
|
80
|
+
# Looks up the [census division](http://data.brighterplanet.com/census_divisions) `natural gas intensity` (*cubic m / room-night*).
|
48
81
|
quorum 'from census division', :needs => :census_division do |characteristics|
|
49
82
|
characteristics[:census_division].lodging_building_natural_gas_intensity
|
50
83
|
end
|
51
84
|
|
85
|
+
#### Natural gas intensity from lodging class
|
86
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
87
|
+
#
|
88
|
+
# Looks up the [lodging class](http://data.brighterplanet.com/lodging_class) `natural gas intensity` (*cubic m / room-night*).
|
52
89
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
53
90
|
characteristics[:lodging_class].natural_gas_intensity
|
54
91
|
end
|
55
92
|
end
|
56
93
|
|
57
|
-
|
94
|
+
### Fuel oil intensity calculation
|
95
|
+
# Returns the `fuel oil intensity` (*l / room-night*).
|
96
|
+
committee :fuel_oil_intensity do
|
97
|
+
#### Fuel oil intensity from census division
|
98
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
99
|
+
#
|
100
|
+
# Looks up the [census division](http://data.brighterplanet.com/census_divisions) `fuel oil intensity` (*l / room-night*).
|
58
101
|
quorum 'from census division', :needs => :census_division do |characteristics|
|
59
102
|
characteristics[:census_division].lodging_building_fuel_oil_intensity
|
60
103
|
end
|
61
104
|
|
105
|
+
#### Fuel oil intensity from lodging class
|
106
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
107
|
+
#
|
108
|
+
# Looks up the [lodging class](http://data.brighterplanet.com/lodging_class) `fuel oil intensity` (*l / room-night*).
|
62
109
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
63
110
|
characteristics[:lodging_class].fuel_oil_intensity
|
64
111
|
end
|
65
112
|
end
|
66
113
|
|
67
|
-
|
114
|
+
### Electricity intensity calculation
|
115
|
+
# Returns the `electricity intensity` (*kWh / room-night*).
|
116
|
+
committee :electricity_intensity do
|
117
|
+
#### Electricity intensity from census division
|
118
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
119
|
+
#
|
120
|
+
# Looks up the [census division](http://data.brighterplanet.com/census_divisions) `electricity intensity` (*kWh / room-night*).
|
68
121
|
quorum 'from census division', :needs => :census_division do |characteristics|
|
69
122
|
characteristics[:census_division].lodging_building_electricity_intensity
|
70
123
|
end
|
71
124
|
|
125
|
+
#### Electricity intensity from lodging class
|
126
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
127
|
+
#
|
128
|
+
# Looks up the [lodging class](http://data.brighterplanet.com/lodging classes) `electricity intensity` (*kWh / room-night*).
|
72
129
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
73
130
|
characteristics[:lodging_class].electricity_intensity
|
74
131
|
end
|
75
132
|
end
|
76
133
|
|
77
|
-
|
134
|
+
### District heat intensity calculation
|
135
|
+
# Returns the `district heat intensity` (*J / room-night*).
|
136
|
+
committee :district_heat_intensity do
|
137
|
+
#### District heat intensity from census division
|
138
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
139
|
+
#
|
140
|
+
# Looks up the [census division](http://data.brighterplanet.com/census_divisions) `district heat intensity` (*J / room-night*).
|
78
141
|
quorum 'from census division', :needs => :census_division do |characteristics|
|
79
142
|
characteristics[:census_division].lodging_building_district_heat_intensity
|
80
143
|
end
|
81
144
|
|
145
|
+
#### District heat intensity from lodging class
|
146
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
147
|
+
#
|
148
|
+
# Looks up the [lodging class](http://data.brighterplanet.com/lodging_classes) `district heat intensity` (*J / room-night*).
|
82
149
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
83
150
|
characteristics[:lodging_class].district_heat_intensity
|
84
151
|
end
|
85
152
|
end
|
86
153
|
|
87
|
-
|
154
|
+
### Lodging class calculation
|
155
|
+
# Returns the [lodging class](http://data.brighterplanet.com/lodging_classes).
|
156
|
+
committee :lodging_class do
|
157
|
+
#### Lodging class from client input
|
158
|
+
# **Complies:** All
|
159
|
+
#
|
160
|
+
# Uses the client-input [loding class](http://data.brighterplanet.com/lodging_classes).
|
161
|
+
|
162
|
+
#### Default lodging class
|
163
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
164
|
+
#
|
165
|
+
# Uses an artificial [lodging class](http://data.brighterplanet.com/lodging_classes) that represents the U.S. average.
|
88
166
|
quorum 'default' do
|
89
167
|
LodgingClass.find_by_name 'Average'
|
90
168
|
end
|
91
169
|
end
|
92
170
|
|
93
|
-
|
171
|
+
### eGRID region calculation
|
172
|
+
# Returns the lodging's [eGRID region](http://data.brighterplanet.com/egrid_regions).
|
173
|
+
committee :egrid_region do
|
174
|
+
#### eGRID region from eGRID subregion
|
175
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
176
|
+
#
|
177
|
+
# Looks up the [eGRID subregion](http://data.brighterplanet.com/egrid_subregions) `eGRID region`.
|
94
178
|
quorum 'from eGRID subregion', :needs => :egrid_subregion do |characteristics|
|
95
179
|
characteristics[:egrid_subregion].egrid_region
|
96
180
|
end
|
97
181
|
end
|
98
182
|
|
99
|
-
|
183
|
+
### eGRID subregion calculation
|
184
|
+
# Returns the lodging's [eGRID subregion](http://data.brighterplanet.com/egrid_subregions).
|
185
|
+
committee :egrid_subregion do
|
186
|
+
#### eGRID subregion from zip code
|
187
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
188
|
+
#
|
189
|
+
# Looks up the [zip code](http://data.brighterplanet.com/zip_codes) `eGRID subregion`.
|
100
190
|
quorum 'from zip code', :needs => :zip_code do |characteristics|
|
101
191
|
characteristics[:zip_code].egrid_subregion
|
102
192
|
end
|
103
193
|
|
194
|
+
#### Default eGRID subregion
|
195
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
196
|
+
#
|
197
|
+
# Uses an artificial [eGRID subregion](http://data.brighterplanet.com/egrid_subregions) that represents the U.S. average.
|
104
198
|
quorum 'default' do
|
105
199
|
EgridSubregion.find_by_abbreviation 'US'
|
106
200
|
end
|
107
201
|
end
|
108
202
|
|
109
|
-
|
203
|
+
### Census division calculation
|
204
|
+
# Returns the lodging's [census division](http://data.brighterplanet.com/census_divisions).
|
205
|
+
committee :census_division do
|
206
|
+
#### Census division from state
|
207
|
+
# Looks up the [state](http://data.brighterplanet.com/states) `census division`.
|
110
208
|
quorum 'from state', :needs => :state do |characteristics|
|
111
209
|
characteristics[:state].census_division
|
112
210
|
end
|
113
211
|
end
|
114
212
|
|
115
|
-
|
213
|
+
### State calculation
|
214
|
+
# Returns the lodging's [state](http://data.brighterplanet.com/states).
|
215
|
+
committee :state do
|
216
|
+
#### State from zip code
|
217
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
218
|
+
#
|
219
|
+
# Looks up the [zip code](http://data.brighterplanet.com/zip_codes) `state`.
|
116
220
|
quorum 'from zip code', :needs => :zip_code do |characteristics|
|
117
221
|
characteristics[:zip_code].state
|
118
222
|
end
|
119
223
|
end
|
120
224
|
|
121
|
-
|
225
|
+
### Zip code calculation
|
226
|
+
# Returns the client-input [zip code](http://data.brighterplanet.com/zip_codes).
|
227
|
+
|
228
|
+
### Duration calculation
|
229
|
+
# Returns the stay's `duration` (*nights*).
|
230
|
+
committee :duration do
|
231
|
+
#### Duration from client input
|
232
|
+
# **Complies:** All
|
233
|
+
#
|
234
|
+
# Uses the client-input `duration` (*nights*).
|
235
|
+
|
236
|
+
#### Default duration
|
237
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
238
|
+
#
|
239
|
+
# Uses 1 *night*.
|
122
240
|
quorum 'default' do
|
123
|
-
|
241
|
+
1
|
124
242
|
end
|
125
243
|
end
|
126
244
|
|
127
|
-
|
245
|
+
### Rooms calculation
|
246
|
+
# Returns the number of `rooms` used.
|
247
|
+
committee :rooms do
|
248
|
+
#### Rooms from client input
|
249
|
+
# **Complies:** All
|
250
|
+
#
|
251
|
+
# Uses the client-input number of `rooms`.
|
252
|
+
|
253
|
+
#### Default rooms
|
254
|
+
# **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
|
255
|
+
#
|
256
|
+
# Uses 1 room.
|
128
257
|
quorum 'default' do
|
129
|
-
|
258
|
+
1
|
130
259
|
end
|
131
260
|
end
|
132
261
|
end
|
data/lib/lodging/data.rb
CHANGED
@@ -10,7 +10,4 @@ class LodgingRecord < ActiveRecord::Base
|
|
10
10
|
belongs_to :lodging_class, :foreign_key => 'lodging_class_name'
|
11
11
|
belongs_to :zip_code, :foreign_key => 'zip_code_name'
|
12
12
|
belongs_to :state, :foreign_key => 'state_postal_abbreviation'
|
13
|
-
|
14
|
-
falls_back_on :rooms => 1,
|
15
|
-
:nights => 1
|
16
13
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lodging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 13
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 9
|
10
|
+
version: 0.0.9
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Andy Rossmeissl
|
@@ -18,100 +19,108 @@ autorequire:
|
|
18
19
|
bindir: bin
|
19
20
|
cert_chain: []
|
20
21
|
|
21
|
-
date: 2010-
|
22
|
+
date: 2010-11-17 00:00:00 -08:00
|
22
23
|
default_executable:
|
23
24
|
dependencies:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
26
|
name: activerecord
|
27
|
+
prerelease: false
|
26
28
|
requirement: &id001 !ruby/object:Gem::Requirement
|
27
29
|
none: false
|
28
30
|
requirements:
|
29
31
|
- - ~>
|
30
32
|
- !ruby/object:Gem::Version
|
33
|
+
hash: 7
|
31
34
|
segments:
|
32
35
|
- 3
|
33
36
|
- 0
|
34
37
|
- 0
|
35
38
|
version: 3.0.0
|
36
39
|
type: :development
|
37
|
-
prerelease: false
|
38
40
|
version_requirements: *id001
|
39
41
|
- !ruby/object:Gem::Dependency
|
40
42
|
name: bundler
|
43
|
+
prerelease: false
|
41
44
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
45
|
none: false
|
43
46
|
requirements:
|
44
47
|
- - ~>
|
45
48
|
- !ruby/object:Gem::Version
|
49
|
+
hash: 23
|
46
50
|
segments:
|
47
51
|
- 1
|
48
52
|
- 0
|
49
53
|
- 0
|
50
54
|
version: 1.0.0
|
51
55
|
type: :development
|
52
|
-
prerelease: false
|
53
56
|
version_requirements: *id002
|
54
57
|
- !ruby/object:Gem::Dependency
|
55
58
|
name: cucumber
|
59
|
+
prerelease: false
|
56
60
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
61
|
none: false
|
58
62
|
requirements:
|
59
63
|
- - ">="
|
60
64
|
- !ruby/object:Gem::Version
|
65
|
+
hash: 3
|
61
66
|
segments:
|
62
67
|
- 0
|
63
68
|
version: "0"
|
64
69
|
type: :development
|
65
|
-
prerelease: false
|
66
70
|
version_requirements: *id003
|
67
71
|
- !ruby/object:Gem::Dependency
|
68
72
|
name: jeweler
|
73
|
+
prerelease: false
|
69
74
|
requirement: &id004 !ruby/object:Gem::Requirement
|
70
75
|
none: false
|
71
76
|
requirements:
|
72
77
|
- - ~>
|
73
78
|
- !ruby/object:Gem::Version
|
79
|
+
hash: 7
|
74
80
|
segments:
|
75
81
|
- 1
|
76
82
|
- 4
|
77
83
|
- 0
|
78
84
|
version: 1.4.0
|
79
85
|
type: :development
|
80
|
-
prerelease: false
|
81
86
|
version_requirements: *id004
|
82
87
|
- !ruby/object:Gem::Dependency
|
83
88
|
name: rake
|
89
|
+
prerelease: false
|
84
90
|
requirement: &id005 !ruby/object:Gem::Requirement
|
85
91
|
none: false
|
86
92
|
requirements:
|
87
93
|
- - ">="
|
88
94
|
- !ruby/object:Gem::Version
|
95
|
+
hash: 3
|
89
96
|
segments:
|
90
97
|
- 0
|
91
98
|
version: "0"
|
92
99
|
type: :development
|
93
|
-
prerelease: false
|
94
100
|
version_requirements: *id005
|
95
101
|
- !ruby/object:Gem::Dependency
|
96
102
|
name: rdoc
|
103
|
+
prerelease: false
|
97
104
|
requirement: &id006 !ruby/object:Gem::Requirement
|
98
105
|
none: false
|
99
106
|
requirements:
|
100
107
|
- - ">="
|
101
108
|
- !ruby/object:Gem::Version
|
109
|
+
hash: 3
|
102
110
|
segments:
|
103
111
|
- 0
|
104
112
|
version: "0"
|
105
113
|
type: :development
|
106
|
-
prerelease: false
|
107
114
|
version_requirements: *id006
|
108
115
|
- !ruby/object:Gem::Dependency
|
109
116
|
name: rspec
|
117
|
+
prerelease: false
|
110
118
|
requirement: &id007 !ruby/object:Gem::Requirement
|
111
119
|
none: false
|
112
120
|
requirements:
|
113
121
|
- - ~>
|
114
122
|
- !ruby/object:Gem::Version
|
123
|
+
hash: 62196417
|
115
124
|
segments:
|
116
125
|
- 2
|
117
126
|
- 0
|
@@ -120,37 +129,38 @@ dependencies:
|
|
120
129
|
- 17
|
121
130
|
version: 2.0.0.beta.17
|
122
131
|
type: :development
|
123
|
-
prerelease: false
|
124
132
|
version_requirements: *id007
|
125
133
|
- !ruby/object:Gem::Dependency
|
126
134
|
name: sniff
|
135
|
+
prerelease: false
|
127
136
|
requirement: &id008 !ruby/object:Gem::Requirement
|
128
137
|
none: false
|
129
138
|
requirements:
|
130
139
|
- - ~>
|
131
140
|
- !ruby/object:Gem::Version
|
141
|
+
hash: 23
|
132
142
|
segments:
|
133
143
|
- 0
|
134
144
|
- 2
|
135
145
|
- 0
|
136
146
|
version: 0.2.0
|
137
147
|
type: :development
|
138
|
-
prerelease: false
|
139
148
|
version_requirements: *id008
|
140
149
|
- !ruby/object:Gem::Dependency
|
141
150
|
name: emitter
|
151
|
+
prerelease: false
|
142
152
|
requirement: &id009 !ruby/object:Gem::Requirement
|
143
153
|
none: false
|
144
154
|
requirements:
|
145
155
|
- - ~>
|
146
156
|
- !ruby/object:Gem::Version
|
157
|
+
hash: 21
|
147
158
|
segments:
|
148
159
|
- 0
|
149
160
|
- 1
|
150
161
|
- 7
|
151
162
|
version: 0.1.7
|
152
163
|
type: :runtime
|
153
|
-
prerelease: false
|
154
164
|
version_requirements: *id009
|
155
165
|
description: A software model in Ruby for the greenhouse gas emissions of a lodging
|
156
166
|
email: andy@rossmeissl.net
|
@@ -187,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
187
197
|
requirements:
|
188
198
|
- - ">="
|
189
199
|
- !ruby/object:Gem::Version
|
190
|
-
hash:
|
200
|
+
hash: 3
|
191
201
|
segments:
|
192
202
|
- 0
|
193
203
|
version: "0"
|
@@ -196,6 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
206
|
requirements:
|
197
207
|
- - ">="
|
198
208
|
- !ruby/object:Gem::Version
|
209
|
+
hash: 3
|
199
210
|
segments:
|
200
211
|
- 0
|
201
212
|
version: "0"
|