residence 0.0.3 → 0.0.4

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.
@@ -0,0 +1,49 @@
1
+ require 'sniff/database'
2
+
3
+ Sniff::Database.define_schema do
4
+ create_table "residence_records", :force => true do |t|
5
+ t.datetime "created_at"
6
+ t.datetime "updated_at"
7
+ t.integer "profile_id"
8
+ t.date "acquisition"
9
+ t.string "name"
10
+ t.string "urbanity_name"
11
+ t.float "floorspace_estimate"
12
+ t.integer "floors"
13
+ t.string "residence_class_name"
14
+ t.date "construction_year"
15
+ t.float "annual_fuel_oil_volume_estimate"
16
+ t.float "annual_fuel_oil_cost"
17
+ t.float "monthly_natural_gas_volume_estimate"
18
+ t.float "monthly_natural_gas_cost"
19
+ t.float "monthly_electricity_use_estimate"
20
+ t.float "monthly_electricity_cost"
21
+ t.float "green_electricity"
22
+ t.float "annual_propane_volume_estimate"
23
+ t.float "annual_propane_cost"
24
+ t.float "annual_wood_volume_estimate"
25
+ t.float "annual_kerosene_volume_estimate"
26
+ t.float "annual_coal_volume_estimate"
27
+ t.float "annual_coal_cost"
28
+ t.string "clothes_machine_use_name"
29
+ t.integer "refrigerator_count"
30
+ t.float "lighting_efficiency"
31
+ t.boolean "ownership"
32
+ t.integer "freezer_count"
33
+ t.string "air_conditioner_use_name"
34
+ t.string "dishwasher_use_name"
35
+ t.string "zip_code_name"
36
+ t.float "occupation"
37
+ t.integer "residents"
38
+ t.integer "bedrooms"
39
+ t.integer "dining_rooms"
40
+ t.integer "living_rooms"
41
+ t.integer "kitchens"
42
+ t.integer "full_bathrooms"
43
+ t.integer "half_bathrooms"
44
+ t.integer "heated_garage_berths"
45
+ t.integer "other_rooms"
46
+ t.date "retirement"
47
+ t.float "bathrooms"
48
+ end
49
+ end
@@ -0,0 +1,97 @@
1
+ require 'residence'
2
+
3
+ class ResidenceRecord < ActiveRecord::Base
4
+ include Sniff::Emitter
5
+ include BrighterPlanet::Residence
6
+ belongs_to :residence_class
7
+ belongs_to :urbanity
8
+ belongs_to :dishwasher_use
9
+ belongs_to :air_conditioner_use
10
+ belongs_to :clothes_machine_use
11
+ belongs_to :zip_code
12
+
13
+ falls_back_on :annual_fuel_oil_volume_estimate => 52.59.gallons.to(:litres), # https://brighterplanet.sifterapp.com/projects/30/issues/435
14
+ :monthly_natural_gas_volume_estimate => (404.56508697 / 12).therms.to(:joules), # https://brighterplanet.sifterapp.com/projects/30/issues/435
15
+ :annual_propane_volume_estimate => 48.41.gallons.to(:litres), # https://brighterplanet.sifterapp.com/projects/30/issues/435
16
+ :annual_wood_volume_estimate => 0.18.cords.to(:joules), # https://brighterplanet.sifterapp.com/projects/30/issues/435
17
+ :annual_kerosene_volume_estimate => 1.07.gallons.to(:litres), # https://brighterplanet.sifterapp.com/projects/30/issues/435
18
+ :annual_coal_volume_estimate => (6.33 / 2000).tons.to(:kilograms), # https://brighterplanet.sifterapp.com/projects/30/issues/435
19
+ :monthly_electricity_use_estimate => 10752.83 / 12, # kWh https://brighterplanet.sifterapp.com/projects/30/issues/435
20
+ :residents => 2.57, # people https://brighterplanet.sifterapp.com/projects/30/issues/436
21
+ :floorspace_estimate => 2308.61.square_feet.to(:square_metres), # https://brighterplanet.sifterapp.com/projects/30/issues/436
22
+ :occupation => 0.937, # https://brighterplanet.sifterapp.com/projects/30/issues/434
23
+ :green_electricity => 0.0 # crap placeholder for now
24
+
25
+ class << self
26
+ def research(key)
27
+ case key
28
+ when :efficient_lightbulb_power
29
+ 17.5 # watts https://brighterplanet.sifterapp.com/projects/30/issues/433
30
+ when :standard_lightbulb_power
31
+ 67.5 # watts https://brighterplanet.sifterapp.com/projects/30/issues/433
32
+ end
33
+ end
34
+ end
35
+
36
+ def zip_code_name=(value)
37
+ self.zip_code = ZipCode.find_by_name(value)
38
+ end
39
+
40
+ def zip_code_name
41
+ zip_code ? zip_code.name : nil
42
+ end
43
+
44
+ def rooms
45
+ return nil unless ROOMS.collect {|t| t.first}.all? { |r| send r.to_s.pluralize.to_sym }
46
+ ROOMS.map do |room|
47
+ room_name = room[0]
48
+ room_options = room[1]
49
+ send(room_name.to_s.pluralize.to_sym).to_i * room_options[:multiplier]
50
+ end.sum
51
+ end
52
+
53
+ def rooms=(room_count)
54
+ raise ArgumentError, "Can't set rooms directly" unless room_count.nil?
55
+ update_attributes ROOMS.inject({}) { |memo, r| memo[r[0].to_s.pluralize.to_sym] = nil; memo }
56
+ end
57
+
58
+ ADJECTIVES = %w(
59
+ alluring
60
+ beautiful
61
+ charming
62
+ dignified
63
+ elegant
64
+ fair
65
+ graceful
66
+ handsome
67
+ inimitable
68
+ j
69
+ k
70
+ lovely
71
+ magnificent
72
+ n
73
+ o
74
+ pretty
75
+ q
76
+ resplendent
77
+ splendid
78
+ t
79
+ unparalleled
80
+ v
81
+ well-appointed
82
+ x
83
+ y
84
+ z
85
+ )
86
+
87
+ ROOMS = [
88
+ [:bedroom, { :max_count, 10, :multiplier, 1 }],
89
+ [:living_room, { :max_count, 5, :multiplier, 1 }],
90
+ [:dining_room, { :max_count, 3, :multiplier, 1 }],
91
+ [:kitchen, { :max_count, 3, :multiplier, 1 }],
92
+ [:full_bathroom, { :max_count, 10, :multiplier, 0.5 }],
93
+ [:half_bathroom, { :max_count, 10, :multiplier, 0.25 }],
94
+ [:heated_garage_berth, { :max_count, 5, :multiplier, 1 }],
95
+ [:other_room, { :max_count, 10, :multiplier, 1 }]
96
+ ]
97
+ end
metadata CHANGED
@@ -1,30 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: residence
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andy Rossmeissl
14
14
  - Seamus Abshere
15
15
  - Ian Hough
16
16
  - Matt Kling
17
+ - Derek Kastner
17
18
  autorequire:
18
19
  bindir: bin
19
20
  cert_chain: []
20
21
 
21
- date: 2010-07-07 00:00:00 -04:00
22
+ date: 2010-07-23 00:00:00 -04:00
22
23
  default_executable:
23
24
  dependencies:
24
25
  - !ruby/object:Gem::Dependency
25
- name: thoughtbot-shoulda
26
+ type: :development
26
27
  prerelease: false
27
- requirement: &id001 !ruby/object:Gem::Requirement
28
+ name: activerecord
29
+ version_requirements: &id001 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - "="
33
+ - !ruby/object:Gem::Version
34
+ hash: -1848230024
35
+ segments:
36
+ - 3
37
+ - 0
38
+ - 0
39
+ - beta4
40
+ version: 3.0.0.beta4
41
+ requirement: *id001
42
+ - !ruby/object:Gem::Dependency
43
+ type: :development
44
+ prerelease: false
45
+ name: bundler
46
+ version_requirements: &id002 !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ hash: 62196359
52
+ segments:
53
+ - 1
54
+ - 0
55
+ - 0
56
+ - beta
57
+ - 2
58
+ version: 1.0.0.beta.2
59
+ requirement: *id002
60
+ - !ruby/object:Gem::Dependency
61
+ type: :development
62
+ prerelease: false
63
+ name: cucumber
64
+ version_requirements: &id003 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - "="
68
+ - !ruby/object:Gem::Version
69
+ hash: 57
70
+ segments:
71
+ - 0
72
+ - 8
73
+ - 3
74
+ version: 0.8.3
75
+ requirement: *id003
76
+ - !ruby/object:Gem::Dependency
77
+ type: :development
78
+ prerelease: false
79
+ name: jeweler
80
+ version_requirements: &id004 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - "="
84
+ - !ruby/object:Gem::Version
85
+ hash: 7
86
+ segments:
87
+ - 1
88
+ - 4
89
+ - 0
90
+ version: 1.4.0
91
+ requirement: *id004
92
+ - !ruby/object:Gem::Dependency
93
+ type: :development
94
+ prerelease: false
95
+ name: rake
96
+ version_requirements: &id005 !ruby/object:Gem::Requirement
28
97
  none: false
29
98
  requirements:
30
99
  - - ">="
@@ -33,12 +102,12 @@ dependencies:
33
102
  segments:
34
103
  - 0
35
104
  version: "0"
36
- type: :development
37
- version_requirements: *id001
105
+ requirement: *id005
38
106
  - !ruby/object:Gem::Dependency
39
- name: leap
107
+ type: :development
40
108
  prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
109
+ name: rdoc
110
+ version_requirements: &id006 !ruby/object:Gem::Requirement
42
111
  none: false
43
112
  requirements:
44
113
  - - ">="
@@ -47,8 +116,169 @@ dependencies:
47
116
  segments:
48
117
  - 0
49
118
  version: "0"
119
+ requirement: *id006
120
+ - !ruby/object:Gem::Dependency
50
121
  type: :development
51
- version_requirements: *id002
122
+ prerelease: false
123
+ name: rspec
124
+ version_requirements: &id007 !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - "="
128
+ - !ruby/object:Gem::Version
129
+ hash: 62196417
130
+ segments:
131
+ - 2
132
+ - 0
133
+ - 0
134
+ - beta
135
+ - 17
136
+ version: 2.0.0.beta.17
137
+ requirement: *id007
138
+ - !ruby/object:Gem::Dependency
139
+ type: :development
140
+ prerelease: false
141
+ name: sniff
142
+ version_requirements: &id008 !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - "="
146
+ - !ruby/object:Gem::Version
147
+ hash: 1
148
+ segments:
149
+ - 0
150
+ - 0
151
+ - 15
152
+ version: 0.0.15
153
+ requirement: *id008
154
+ - !ruby/object:Gem::Dependency
155
+ type: :runtime
156
+ prerelease: false
157
+ name: characterizable
158
+ version_requirements: &id009 !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - "="
162
+ - !ruby/object:Gem::Version
163
+ hash: 7
164
+ segments:
165
+ - 0
166
+ - 0
167
+ - 12
168
+ version: 0.0.12
169
+ requirement: *id009
170
+ - !ruby/object:Gem::Dependency
171
+ type: :runtime
172
+ prerelease: false
173
+ name: data_miner
174
+ version_requirements: &id010 !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - "="
178
+ - !ruby/object:Gem::Version
179
+ hash: 15
180
+ segments:
181
+ - 0
182
+ - 5
183
+ - 2
184
+ version: 0.5.2
185
+ requirement: *id010
186
+ - !ruby/object:Gem::Dependency
187
+ type: :runtime
188
+ prerelease: false
189
+ name: falls_back_on
190
+ version_requirements: &id011 !ruby/object:Gem::Requirement
191
+ none: false
192
+ requirements:
193
+ - - "="
194
+ - !ruby/object:Gem::Version
195
+ hash: 27
196
+ segments:
197
+ - 0
198
+ - 0
199
+ - 2
200
+ version: 0.0.2
201
+ requirement: *id011
202
+ - !ruby/object:Gem::Dependency
203
+ type: :runtime
204
+ prerelease: false
205
+ name: fast_timestamp
206
+ version_requirements: &id012 !ruby/object:Gem::Requirement
207
+ none: false
208
+ requirements:
209
+ - - "="
210
+ - !ruby/object:Gem::Version
211
+ hash: 23
212
+ segments:
213
+ - 0
214
+ - 0
215
+ - 4
216
+ version: 0.0.4
217
+ requirement: *id012
218
+ - !ruby/object:Gem::Dependency
219
+ type: :runtime
220
+ prerelease: false
221
+ name: leap
222
+ version_requirements: &id013 !ruby/object:Gem::Requirement
223
+ none: false
224
+ requirements:
225
+ - - "="
226
+ - !ruby/object:Gem::Version
227
+ hash: 13
228
+ segments:
229
+ - 0
230
+ - 4
231
+ - 1
232
+ version: 0.4.1
233
+ requirement: *id013
234
+ - !ruby/object:Gem::Dependency
235
+ type: :runtime
236
+ prerelease: false
237
+ name: summary_judgement
238
+ version_requirements: &id014 !ruby/object:Gem::Requirement
239
+ none: false
240
+ requirements:
241
+ - - "="
242
+ - !ruby/object:Gem::Version
243
+ hash: 11
244
+ segments:
245
+ - 1
246
+ - 3
247
+ - 8
248
+ version: 1.3.8
249
+ requirement: *id014
250
+ - !ruby/object:Gem::Dependency
251
+ type: :runtime
252
+ prerelease: false
253
+ name: timeframe
254
+ version_requirements: &id015 !ruby/object:Gem::Requirement
255
+ none: false
256
+ requirements:
257
+ - - "="
258
+ - !ruby/object:Gem::Version
259
+ hash: 15
260
+ segments:
261
+ - 0
262
+ - 0
263
+ - 8
264
+ version: 0.0.8
265
+ requirement: *id015
266
+ - !ruby/object:Gem::Dependency
267
+ type: :runtime
268
+ prerelease: false
269
+ name: weighted_average
270
+ version_requirements: &id016 !ruby/object:Gem::Requirement
271
+ none: false
272
+ requirements:
273
+ - - "="
274
+ - !ruby/object:Gem::Version
275
+ hash: 23
276
+ segments:
277
+ - 0
278
+ - 0
279
+ - 4
280
+ version: 0.0.4
281
+ requirement: *id016
52
282
  description: A software model in Ruby for the greenhouse gas emissions of an residence
53
283
  email: andy@rossmeissl.net
54
284
  executables: []
@@ -59,16 +289,18 @@ extra_rdoc_files:
59
289
  - LICENSE
60
290
  - README.rdoc
61
291
  files:
62
- - .document
63
- - .gitignore
64
292
  - LICENSE
65
293
  - README.rdoc
66
- - Rakefile
67
- - VERSION
68
294
  - lib/residence.rb
69
- - residence.gemspec
70
- - test/helper.rb
71
- - test/test_residence.rb
295
+ - lib/residence/carbon_model.rb
296
+ - lib/residence/characterization.rb
297
+ - lib/residence/data.rb
298
+ - lib/residence/summarization.rb
299
+ - lib/test_support/db/schema.rb
300
+ - lib/test_support/residence_record.rb
301
+ - features/support/env.rb
302
+ - features/residence_committees.feature
303
+ - features/residence_emissions.feature
72
304
  has_rdoc: true
73
305
  homepage: http://github.com/brighterplanet/residence
74
306
  licenses: []
@@ -104,5 +336,8 @@ signing_key:
104
336
  specification_version: 3
105
337
  summary: A carbon model
106
338
  test_files:
107
- - test/helper.rb
108
- - test/test_residence.rb
339
+ - features/support/env.rb
340
+ - features/residence_committees.feature
341
+ - features/residence_emissions.feature
342
+ - lib/test_support/db/schema.rb
343
+ - lib/test_support/residence_record.rb
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
data/Rakefile DELETED
@@ -1,54 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "residence"
8
- gem.summary = %Q{A carbon model}
9
- gem.description = %Q{A software model in Ruby for the greenhouse gas emissions of an residence}
10
- gem.email = "andy@rossmeissl.net"
11
- gem.homepage = "http://github.com/brighterplanet/residence"
12
- gem.authors = ["Andy Rossmeissl", "Seamus Abshere", "Ian Hough", "Matt Kling"]
13
- gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
- gem.add_development_dependency 'leap'
15
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
- end
17
- Jeweler::GemcutterTasks.new
18
- rescue LoadError
19
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
- end
21
-
22
- require 'rake/testtask'
23
- Rake::TestTask.new(:test) do |test|
24
- test.libs << 'lib' << 'test'
25
- test.pattern = 'test/**/test_*.rb'
26
- test.verbose = true
27
- end
28
-
29
- begin
30
- require 'rcov/rcovtask'
31
- Rcov::RcovTask.new do |test|
32
- test.libs << 'test'
33
- test.pattern = 'test/**/test_*.rb'
34
- test.verbose = true
35
- end
36
- rescue LoadError
37
- task :rcov do
38
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
39
- end
40
- end
41
-
42
- task :test => :check_dependencies
43
-
44
- task :default => :test
45
-
46
- require 'rake/rdoctask'
47
- Rake::RDocTask.new do |rdoc|
48
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
49
-
50
- rdoc.rdoc_dir = 'rdoc'
51
- rdoc.title = "residence #{version}"
52
- rdoc.rdoc_files.include('README*')
53
- rdoc.rdoc_files.include('lib/**/*.rb')
54
- end
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.0.3
data/residence.gemspec DELETED
@@ -1,57 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{residence}
8
- s.version = "0.0.3"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Andy Rossmeissl", "Seamus Abshere", "Ian Hough", "Matt Kling"]
12
- s.date = %q{2010-07-07}
13
- s.description = %q{A software model in Ruby for the greenhouse gas emissions of an residence}
14
- s.email = %q{andy@rossmeissl.net}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lib/residence.rb",
27
- "residence.gemspec",
28
- "test/helper.rb",
29
- "test/test_residence.rb"
30
- ]
31
- s.homepage = %q{http://github.com/brighterplanet/residence}
32
- s.rdoc_options = ["--charset=UTF-8"]
33
- s.require_paths = ["lib"]
34
- s.rubygems_version = %q{1.3.7}
35
- s.summary = %q{A carbon model}
36
- s.test_files = [
37
- "test/helper.rb",
38
- "test/test_residence.rb"
39
- ]
40
-
41
- if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
- s.specification_version = 3
44
-
45
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
47
- s.add_development_dependency(%q<leap>, [">= 0"])
48
- else
49
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
50
- s.add_dependency(%q<leap>, [">= 0"])
51
- end
52
- else
53
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
54
- s.add_dependency(%q<leap>, [">= 0"])
55
- end
56
- end
57
-
data/test/helper.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'residence'
8
-
9
- class Test::Unit::TestCase
10
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestResidence < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end