bus_trip 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,33 +1,72 @@
1
1
  Feature: Bus Trip Committee Calculations
2
2
  The bus trip model should generate correct committee calculations
3
-
4
- Scenario Outline: Distance from duration, distance estimate, and bus class
3
+
4
+ Scenario: Passengers from bus class
5
+ Given a bus trip emitter
6
+ And a characteristic "bus_class.name" of "city transit"
7
+ When the "passengers" committee is calculated
8
+ Then the conclusion of the committee should be "10.4"
9
+
10
+ Scenario: Speed from bus class
11
+ Given a bus trip emitter
12
+ And a characteristic "bus_class.name" of "city transit"
13
+ When the "speed" committee is calculated
14
+ Then the conclusion of the committee should be "24.0919"
15
+
16
+ Scenario: Alternative fuels intensity from bus class
5
17
  Given a bus trip emitter
6
- And a characteristic "distance_estimate" of "<distance_estimate>"
7
- And a characteristic "duration" of "<duration>"
8
- And a characteristic "bus_class.name" of "<bus_class>"
9
- When the "bus_class" committee is calculated
18
+ And a characteristic "bus_class.name" of "city transit"
19
+ When the "alternative_fuels_intensity" committee is calculated
20
+ Then the conclusion of the committee should be "2.11693"
21
+
22
+ Scenario: Diesel intensity from bus class
23
+ Given a bus trip emitter
24
+ And a characteristic "bus_class.name" of "city transit"
25
+ When the "diesel_intensity" committee is calculated
26
+ Then the conclusion of the committee should be "0.423386"
27
+
28
+ Scenario: Distance from duration and speed
29
+ Given a bus trip emitter
30
+ And a characteristic "duration" of "60"
31
+ And a characteristic "bus_class.name" of "city transit"
32
+ When the "speed" committee is calculated
10
33
  And the "distance" committee is calculated
11
- Then the conclusion of the committee should be "<distance>"
12
- Examples:
13
- | duration | distance_estimate | bus_class | distance |
14
- | 40 | | | 8 |
15
- | | 60 | | 60 |
16
- | | | regional coach | 8 |
17
- | | | city transit | 8 |
18
-
19
- Scenario Outline: Diesel consumed from distance and diesel intensity
20
- Given a bus trip emitter
21
- And a characteristic "distance_estimate" of "<distance_estimate>"
22
- And a characteristic "duration" of "<duration>"
23
- And a characteristic "bus_class.name" of "<bus_class>"
34
+ Then the committee should have used quorum "from duration and speed"
35
+ And the conclusion of the committee should be "24.0919"
36
+
37
+ Scenario: Distance from bus class
38
+ Given a bus trip emitter
39
+ And a characteristic "bus_class.name" of "city transit"
24
40
  When the "distance" committee is calculated
25
- And the "diesel_intensity" committee is calculated
26
- And the "diesel_consumed" committee is calculated
27
- Then the conclusion of the committee should be "<diesel_consumed>"
28
- Examples:
29
- | duration | distance_estimate | bus_class | diesel_consumed |
30
- | 40 | | regional coach | 5.03461 |
31
- | | 60 | city transit | 25.40316 |
32
- | | | regional coach | 5.03461 |
33
- | | | city transit | 3.04574 |
41
+ Then the committee should have used quorum "from bus class"
42
+ Then the conclusion of the committee should be "7.19377"
43
+
44
+ Scenario: Alternative fuels consumed from distance and alternative fuels intensity
45
+ Given a bus trip emitter
46
+ And a characteristic "alternative_fuels_intensity" of "2"
47
+ And a characteristic "distance" of "10"
48
+ When the "alternative_fuels_consumed" committee is calculated
49
+ Then the conclusion of the committee should be "20"
50
+
51
+ Scenario: Diesel consumed from distance and diesel intensity
52
+ Given a bus trip emitter
53
+ And a characteristic "diesel_intensity" of "2"
54
+ And a characteristic "distance" of "10"
55
+ When the "diesel_consumed" committee is calculated
56
+ Then the conclusion of the committee should be "20"
57
+
58
+ Scenario: Alternative fuels emission factor from default
59
+ Given a bus trip emitter
60
+ When the "alternative_fuels_emission_factor" committee is calculated
61
+ Then the conclusion of the committee should be "1.16735"
62
+
63
+ Scenario: Diesel emission factor from default
64
+ Given a bus trip emitter
65
+ When the "diesel_emission_factor" committee is calculated
66
+ Then the conclusion of the committee should be "2.0"
67
+
68
+ Scenario: Air conditioning emission factor from bus class
69
+ Given a bus trip emitter
70
+ And a characteristic "bus_class.name" of "city transit"
71
+ When the "air_conditioning_emission_factor" committee is calculated
72
+ Then the conclusion of the committee should be "0.5"
@@ -1,39 +1,22 @@
1
1
  Feature: Bus Trip Emissions Calculations
2
2
  The bus trip model should generate correct emission calculations
3
-
4
- Scenario Outline: Calculations for bus trips with just timeframe and distance
5
- Given a bus trip has "distance_estimate" of "<distance>"
6
- And it has "timeframe" of "<timeframe>"
3
+
4
+ Scenario: Calculations for bus trip with nothing
5
+ Given a bus trip has nothing
7
6
  When emissions are calculated
8
- Then the emission value should be within "0.1" kgs of "<emission>"
9
- Examples:
10
- | timeframe | distance | emission |
11
- | 2010-08-01/2010-08-01 | 10 | 1.2 |
12
- | 2010-08-01/2010-08-11 | 400 | 51.0 |
13
-
14
- Scenario Outline: Standard Calculations for bus trips with timeframe and bus class
15
- Given a bus trip has "distance_estimate" of "<distance>"
16
- And it has "bus_class.name" of "<bus_class>"
17
- And it has "timeframe" of "<timeframe>"
7
+ Then the emission value should be within "0.01" kgs of "0.87"
8
+
9
+ Scenario: Calculations for bus trip from distance
10
+ Given a bus trip has "distance" of "100"
18
11
  When emissions are calculated
19
- Then the emission value should be within "0.1" kgs of "<emission>"
20
- Examples:
21
- | timeframe | distance | bus_class | emission |
22
- | 2010-08-01/2010-08-01 | 10 | city transit | 3.4 |
23
- | 2010-08-01/2010-08-11 | 400 | regional coach | 51.4 |
24
-
25
- Scenario Outline: Calculations involving fuel types
26
- Given a bus trip has "distance_estimate" of "<distance>"
27
- And it has "bus_class.gasoline_intensity" of "<gasoline>"
28
- And it has "bus_class.diesel_intensity" of "<diesel>"
29
- And it has "bus_class.alternative_fuels_intensity" of "<alternative>"
30
- And it has "bus_class.passengers" of "<passengers>"
31
- And it has "bus_class.name" of "<bus_class>"
12
+ Then the emission value should be within "0.01" kgs of "9.94"
13
+
14
+ Scenario: Calculations for bus trip from duration
15
+ Given a bus trip has "duration" of "60"
32
16
  When emissions are calculated
33
- Then the emission value should be within "0.1" kgs of "<emission>"
34
- Examples:
35
- | gasoline | diesel | alternative | passengers | distance | bus_class | emission |
36
- | 40 | | | 25 | 328 | regional coach | 41.8 |
37
- | | 60 | | 85 | 623 | regional coach | 79.5 |
38
- | | 10 | 10 | 120 | 11 | city transit | 1.4 |
39
- | | 20 | | 20 | 11 | city transit | 1.4 |
17
+ Then the emission value should be within "0.01" kgs of "3.15"
18
+
19
+ Scenario: Calculations for bus trip from bus class
20
+ Given a bus trip has "bus_class.name" of "city transit"
21
+ When emissions are calculated
22
+ Then the emission value should be within "0.01" kgs of "2.64"
@@ -5,4 +5,4 @@ require 'cucumber'
5
5
  require 'cucumber/formatter/unicode'
6
6
 
7
7
  require 'sniff'
8
- Sniff.init File.join(File.dirname(__FILE__), '..', '..'), :earth => :bus, :cucumber => true
8
+ Sniff.init File.join(File.dirname(__FILE__), '..', '..'), :earth => [:bus, :fuel], :cucumber => true
@@ -2,103 +2,201 @@
2
2
  # See LICENSE for details.
3
3
  # Contact Brighter Planet for dual-license arrangements.
4
4
 
5
+ ## Bus trip 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 passenger bus travel**.
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 ('default' methods do not require any values). Methods are ignored if any of the values they require are unvailable. Calculations are ignored if all of their methods are unavailable.
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 or will be unavailable.
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.
5
19
  module BrighterPlanet
6
20
  module BusTrip
7
21
  module CarbonModel
8
22
  def self.included(base)
9
- base.extend FastTimestamp
10
23
  base.decide :emission, :with => :characteristics do
11
- committee :emission do # returns kg CO2
12
- quorum 'from fuel and passengers', :needs => [:diesel_consumed, :gasoline_consumed, :alternative_fuels_consumed, :passengers, :distance, :bus_class] do |characteristics|
13
- #(( litres diesel ) * ( kilograms CO2 / litre diesel ) + ( litres gasoline ) * ( kilograms CO2 / kWh ) + ( litre-equivs alternative fuel ) * (kilograms CO2 / litre-equiv alternative fuel))
14
- (characteristics[:diesel_consumed] * research(:diesel_emission_factor) + characteristics[:gasoline_consumed] * research(:gasoline_emission_factor) + characteristics[:alternative_fuels_consumed] * research(:alternative_fuels_emission_factor) + characteristics[:distance] * characteristics[:bus_class].fugitive_air_conditioning_emission) / characteristics[:passengers]
24
+ ### Emission calculation
25
+ # Returns the `emission` estimate (*kg CO<sub>2</sub>e*)
26
+ committee :emission do
27
+ #### Emission from fuel, emission factors, and passengers
28
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
29
+ #
30
+ # - Multiplies diesel consumed (*l*) by the diesel emission factor (*kg CO<sub>2</sub>e / l*) to give diesel emissions (*kg CO<sub>2</sub>e*)
31
+ # - Multiplies alternaive fuel consumed (*l*) by the alternative fuels emission factor (*kg CO<sub>2</sub>e / l*) to give alternative fuels emissions (*kg CO<sub>2</sub>e*)
32
+ # - Multiplies distance (*km*) by the air conditioning emission factor (*kg CO<sub>2</sub>e / km*) to give air conditioning emissions (*kg CO<sub>2</sub>e*)
33
+ # - Sums the diesel, alternative fuels, and air conditioning emissions and divides by passengers to give emissions per passenger (*kg CO<sub>2</sub>e*)
34
+ quorum 'from fuels, emission factors, and passengers', :needs => [:diesel_consumed, :diesel_emission_factor, :alternative_fuels_consumed, :alternative_fuels_emission_factor, :distance, :air_conditioning_emission_factor, :passengers] do |characteristics|
35
+ (characteristics[:diesel_consumed] * characteristics[:diesel_emission_factor] + characteristics[:alternative_fuels_consumed] * characteristics[:alternative_fuels_emission_factor] + characteristics[:distance] * characteristics[:air_conditioning_emission_factor]) / characteristics[:passengers]
15
36
  end
16
37
  end
17
38
 
18
- committee :diesel_consumed do # returns litres diesel
19
- quorum 'from distance and diesel intensity', :needs => [:distance, :diesel_intensity] do |characteristics|
20
- #( kilometres ) * ( litres diesel / kilometre )
21
- characteristics[:distance] * characteristics[:diesel_intensity]
39
+ ### Air conditioning emission factor calculation
40
+ # Returns the `air conditioning emission factor` (*kg CO<sub>2</sub>e / km*).
41
+ # This is used to account for fugitive emissions of air conditioning refrigerants.
42
+ committee :air_conditioning_emission_factor do
43
+ #### Air conditioning emission factor from bus class
44
+ # **Complies:** GHG Protocol, ISO 14046-1, Climate Registry Protocol
45
+ #
46
+ # Looks up the [bus class](http://data.brighterplanet.com/bus_classes) `air conditioning emission factor` (*kg CO<sub>2</sub>e / km*).
47
+ quorum 'from bus class', :needs => :bus_class do |characteristics|
48
+ characteristics[:bus_class].air_conditioning_emission_factor
49
+ end
50
+ end
51
+
52
+ ### Diesel emission factor calculation
53
+ # Returns the `diesel emission factor` (*kg CO<sub>2</sub>e / l*).
54
+ committee :diesel_emission_factor do
55
+ #### Default diesel emission factor
56
+ # **Complies:** GHG Protocol, ISO 14046-1, Climate Registry Protocol
57
+ #
58
+ # Looks up [Distillate Fuel Oil 2](http://data.brighterplanet.com/fuel_types)'s `emission factor` (*kg CO<sub>2</sub>e / l*).
59
+ quorum 'default' do
60
+ diesel = FuelType.find_by_name "Distillate Fuel Oil 2"
61
+ diesel.emission_factor
22
62
  end
23
63
  end
24
64
 
25
- committee :gasoline_consumed do # returns litres gasoline
26
- quorum 'from distance and gasoline intensity', :needs => [:distance, :gasoline_intensity] do |characteristics|
27
- #( kilometres ) * ( litres gasoline / kilometre )
28
- characteristics[:distance] * characteristics[:gasoline_intensity]
65
+ ### Alternative fuels emission factor calculation
66
+ # Returns the `alternative fuels emission factor` (*kg CO<sub>2</sub>e / l*).
67
+ committee :alternative_fuels_emission_factor do
68
+ #### Default alternative fuels emission factor
69
+ # **Complies:** GHG Protocol, ISO 14046-1, Climate Registry Protocol
70
+ #
71
+ # Uses an `alternative fuels emission factor` of 1.17 *kg CO<sub>2</sub>e / l*.
72
+ quorum 'default' do
73
+ 9.742.pounds_per_gallon.to(:kilograms_per_litre)
29
74
  end
30
75
  end
31
76
 
32
- committee :alternative_fuels_consumed do # returns litres alternative_fuels
77
+ ### Diesel consumed calculation
78
+ # Returns the `diesel consumed` (*l*).
79
+ committee :diesel_consumed do
80
+ #### Diesel consumed from distance and diesel intensity
81
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
82
+ #
83
+ # Multiplies `distance` (*km*) by `diesel intensity` (*l / km*) to give *l*.
84
+ quorum 'from distance and diesel intensity', :needs => [:distance, :diesel_intensity] do |characteristics|
85
+ characteristics[:distance] * characteristics[:diesel_intensity]
86
+ end
87
+ end
88
+
89
+ ### Alternative fuels consumed calculation
90
+ # Returns the `alternative fuels consumed` (*l*).
91
+ committee :alternative_fuels_consumed do
92
+ #### Alternative fuels consumed from distance and alternative fuels intensity
93
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
94
+ #
95
+ # Multiplies `distance` (*km*) by `alternative fuels intensity` (*l / km*) to give *l*.
33
96
  quorum 'from distance and alternative fuels intensity', :needs => [:distance, :alternative_fuels_intensity] do |characteristics|
34
- #( kilometres ) * ( litres alternative_fuels / kilometre )
35
97
  characteristics[:distance] * characteristics[:alternative_fuels_intensity]
36
98
  end
37
99
  end
38
100
 
39
- committee :distance do # returns kilometres
40
- quorum 'from distance estimate', :needs => :distance_estimate do |characteristics|
41
- characteristics[:distance_estimate]
42
- end
101
+ ### Distance calculation
102
+ # Returns the `distance` travelled (*km*).
103
+ committee :distance do
104
+ #### Distance from client input
105
+ # **Complies:** All
106
+ #
107
+ # Uses the client-input `distance` (*km*).
43
108
 
44
- quorum 'from duration', :needs => [:duration, :speed] do |characteristics|
45
- #( minutes ) * ( kph )
46
- characteristics[:duration] * characteristics[:speed] / 60
109
+ #### Distance from duration and speed
110
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
111
+ #
112
+ # Divides `duration` (*minutes*) by 60 and multiplies by `speed` (*km / hour*) to give *km*.
113
+ quorum 'from duration and speed', :needs => [:duration, :speed] do |characteristics|
114
+ characteristics[:duration] / 60 * characteristics[:speed]
47
115
  end
48
116
 
117
+ #### Distance from bus class
118
+ # **Complies:**
119
+ #
120
+ # Looks up the [bus class](http://data.brighterplanet.com/bus_classes) `distance` (*km*).
49
121
  quorum 'from bus class', :needs => :bus_class do |characteristics|
50
122
  characteristics[:bus_class].distance
51
123
  end
52
124
  end
53
125
 
54
- committee :diesel_intensity do # returns litres diesel / vehicle kilometre
126
+ ### Speed calculation
127
+ # Returns the average `speed` (*km / hour*).
128
+ committee :speed do
129
+ #### Speed from bus class
130
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
131
+ #
132
+ # Looks up the [bus class](http://data.brighterplanet.com/bus_classes)' average `speed` (*km / hour*).
55
133
  quorum 'from bus class', :needs => :bus_class do |characteristics|
56
- characteristics[:bus_class].diesel_intensity
134
+ characteristics[:bus_class].speed
57
135
  end
58
136
  end
59
137
 
60
- committee :gasoline_intensity do # returns litres gasoline / vehicle kilometre
61
- quorum 'from bus class', :needs => :bus_class do |characteristics|
62
- characteristics[:bus_class].gasoline_intensity
63
- end
64
- end
138
+ ### Duration calculation
139
+ # Returns the trip's `duration` (*minutes*).
140
+ #### Duration from client input
141
+ # **Complies:** All
142
+ #
143
+ # Uses the client-input `duration` (*minutes*).
65
144
 
66
- committee :alternative_fuels_intensity do # returns litres alternative_fuels / vehicle kilometre
145
+ ### Diesel intensity calculation
146
+ # Returns the `diesel intensity` (*l / km*).
147
+ committee :diesel_intensity do
148
+ #### Diesel intensity from bus class
149
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
150
+ #
151
+ # Looks up the [bus class](http://data.brighterplanet.com/bus_classes) `diesel intensity` (*l / km*).
67
152
  quorum 'from bus class', :needs => :bus_class do |characteristics|
68
- characteristics[:bus_class].alternative_fuels_intensity
153
+ characteristics[:bus_class].diesel_intensity
69
154
  end
70
155
  end
71
156
 
72
- committee :speed do # returns kph
157
+ ### Alternative fuels intensity calculation
158
+ # Returns the `alternative fuels intensity` (*l / km*).
159
+ committee :alternative_fuels_intensity do
160
+ #### Alternative fuels intensity from bus class
161
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
162
+ #
163
+ # Looks up the [bus class](http://data.brighterplanet.com/bus_classes) `alternative fuels intensity` (*l / km*).
73
164
  quorum 'from bus class', :needs => :bus_class do |characteristics|
74
- characteristics[:bus_class].speed
165
+ characteristics[:bus_class].alternative_fuels_intensity
75
166
  end
76
167
  end
77
168
 
169
+ ### Passengers calculation
170
+ # Returns the number of `passengers` on the bus.
78
171
  committee :passengers do
172
+ #### Passengers from bus class
173
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
174
+ #
175
+ # Looks up the [bus class](http://data.brighterplanet.com/bus_classes)' average number of `passengers`.
79
176
  quorum 'from bus class', :needs => :bus_class do |characteristics|
80
177
  characteristics[:bus_class].passengers
81
178
  end
82
179
  end
83
180
 
181
+ ### Bus class calculation
182
+ # Returns the `bus class`.
183
+ # This is the type of bus used.
84
184
  committee :bus_class do
185
+ #### From client input
186
+ # **Complies:** All
187
+ #
188
+ # Uses the client-input [bus class](http://data.brighterplanet.com/bus_classes).
189
+
190
+ #### Default bus class
191
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
192
+ #
193
+ # Uses an artificial [bus class](http://data.brighterplanet.com/bus_classes) that represents the U.S. average.
85
194
  quorum 'default' do
86
195
  BusClass.fallback
87
196
  end
88
197
  end
89
198
  end
90
199
  end
91
-
92
- def self.research(key)
93
- case key
94
- when :diesel_emission_factor
95
- 22.450.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / diesel https://brighterplanet.sifterapp.com/projects/30/issues/454
96
- when :gasoline_emission_factor
97
- 23.681.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / gasoline https://brighterplanet.sifterapp.com/projects/30/issues/454
98
- when :alternative_fuels_emission_factor
99
- 9.742.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / equiv alternative fuels https://brighterplanet.sifterapp.com/projects/30/issues/454
100
- end
101
- end
102
200
  end
103
201
  end
104
202
  end
@@ -4,8 +4,8 @@ module BrighterPlanet
4
4
  def self.included(base)
5
5
  base.characterize do
6
6
  has :bus_class
7
- has :duration # measures time in minutes
8
- has :distance_estimate, :trumps => :duration, :measures => :length
7
+ has :duration
8
+ has :distance, :measures => :length
9
9
  end
10
10
  end
11
11
  end
@@ -4,10 +4,9 @@ module BrighterPlanet
4
4
  def self.included(base)
5
5
  base.data_miner do
6
6
  schema do
7
- string 'bus_class_id'
7
+ string 'bus_class_name'
8
8
  float 'duration'
9
- float 'distance_estimate'
10
- date 'date'
9
+ float 'distance'
11
10
  end
12
11
 
13
12
  process :run_data_miner_on_belongs_to_associations
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bus_trip
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 5
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 12
9
- version: 0.0.12
9
+ - 13
10
+ version: 0.0.13
10
11
  platform: ruby
11
12
  authors:
12
13
  - Andy Rossmeissl
@@ -18,101 +19,109 @@ autorequire:
18
19
  bindir: bin
19
20
  cert_chain: []
20
21
 
21
- date: 2010-10-19 00:00:00 -04:00
22
+ date: 2010-12-02 00:00:00 -05: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: 15
46
50
  segments:
47
51
  - 1
48
52
  - 0
49
53
  version: "1.0"
50
54
  type: :development
51
- prerelease: false
52
55
  version_requirements: *id002
53
56
  - !ruby/object:Gem::Dependency
54
57
  name: cucumber
58
+ prerelease: false
55
59
  requirement: &id003 !ruby/object:Gem::Requirement
56
60
  none: false
57
61
  requirements:
58
62
  - - "="
59
63
  - !ruby/object:Gem::Version
64
+ hash: 57
60
65
  segments:
61
66
  - 0
62
67
  - 8
63
68
  - 3
64
69
  version: 0.8.3
65
70
  type: :development
66
- prerelease: false
67
71
  version_requirements: *id003
68
72
  - !ruby/object:Gem::Dependency
69
73
  name: jeweler
74
+ prerelease: false
70
75
  requirement: &id004 !ruby/object:Gem::Requirement
71
76
  none: false
72
77
  requirements:
73
78
  - - "="
74
79
  - !ruby/object:Gem::Version
80
+ hash: 7
75
81
  segments:
76
82
  - 1
77
83
  - 4
78
84
  - 0
79
85
  version: 1.4.0
80
86
  type: :development
81
- prerelease: false
82
87
  version_requirements: *id004
83
88
  - !ruby/object:Gem::Dependency
84
89
  name: rake
90
+ prerelease: false
85
91
  requirement: &id005 !ruby/object:Gem::Requirement
86
92
  none: false
87
93
  requirements:
88
94
  - - ">="
89
95
  - !ruby/object:Gem::Version
96
+ hash: 3
90
97
  segments:
91
98
  - 0
92
99
  version: "0"
93
100
  type: :development
94
- prerelease: false
95
101
  version_requirements: *id005
96
102
  - !ruby/object:Gem::Dependency
97
103
  name: rdoc
104
+ prerelease: false
98
105
  requirement: &id006 !ruby/object:Gem::Requirement
99
106
  none: false
100
107
  requirements:
101
108
  - - ">="
102
109
  - !ruby/object:Gem::Version
110
+ hash: 3
103
111
  segments:
104
112
  - 0
105
113
  version: "0"
106
114
  type: :development
107
- prerelease: false
108
115
  version_requirements: *id006
109
116
  - !ruby/object:Gem::Dependency
110
117
  name: rspec
118
+ prerelease: false
111
119
  requirement: &id007 !ruby/object:Gem::Requirement
112
120
  none: false
113
121
  requirements:
114
122
  - - "="
115
123
  - !ruby/object:Gem::Version
124
+ hash: 62196417
116
125
  segments:
117
126
  - 2
118
127
  - 0
@@ -121,37 +130,38 @@ dependencies:
121
130
  - 17
122
131
  version: 2.0.0.beta.17
123
132
  type: :development
124
- prerelease: false
125
133
  version_requirements: *id007
126
134
  - !ruby/object:Gem::Dependency
127
135
  name: sniff
136
+ prerelease: false
128
137
  requirement: &id008 !ruby/object:Gem::Requirement
129
138
  none: false
130
139
  requirements:
131
140
  - - ~>
132
141
  - !ruby/object:Gem::Version
142
+ hash: 19
133
143
  segments:
134
144
  - 0
135
- - 2
145
+ - 3
136
146
  - 0
137
- version: 0.2.0
147
+ version: 0.3.0
138
148
  type: :development
139
- prerelease: false
140
149
  version_requirements: *id008
141
150
  - !ruby/object:Gem::Dependency
142
151
  name: emitter
152
+ prerelease: false
143
153
  requirement: &id009 !ruby/object:Gem::Requirement
144
154
  none: false
145
155
  requirements:
146
156
  - - ~>
147
157
  - !ruby/object:Gem::Version
158
+ hash: 21
148
159
  segments:
149
160
  - 0
161
+ - 2
150
162
  - 1
151
- - 7
152
- version: 0.1.7
163
+ version: 0.2.1
153
164
  type: :runtime
154
- prerelease: false
155
165
  version_requirements: *id009
156
166
  description: A software model in Ruby for the greenhouse gas emissions of a bus trip
157
167
  email: andy@rossmeissl.net
@@ -188,7 +198,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
198
  requirements:
189
199
  - - ">="
190
200
  - !ruby/object:Gem::Version
191
- hash: 2657505266370138931
201
+ hash: 3
192
202
  segments:
193
203
  - 0
194
204
  version: "0"
@@ -197,6 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
207
  requirements:
198
208
  - - ">="
199
209
  - !ruby/object:Gem::Version
210
+ hash: 3
200
211
  segments:
201
212
  - 0
202
213
  version: "0"