earth 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/README.markdown +1 -1
  2. data/Rakefile +44 -16
  3. data/earth.gemspec +4 -8
  4. data/features/automobile_make_model_year_variant.feature +4 -4
  5. data/features/step_definitions/data_steps.rb +32 -0
  6. data/features/support/env.rb +6 -3
  7. data/features/support/imports/automobile_make_model_year_variant_bad.csv +1 -1
  8. data/features/support/imports/automobile_make_model_year_variant_good.csv +1 -1
  9. data/lib/earth/air/aircraft/data_miner.rb +1 -1
  10. data/lib/earth/air/aircraft_class/data_miner.rb +1 -1
  11. data/lib/earth/air/flight_distance_class/data_miner.rb +1 -1
  12. data/lib/earth/air/flight_seat_class/data_miner.rb +2 -2
  13. data/lib/earth/automobile/automobile_fuel/data_miner.rb +9 -2
  14. data/lib/earth/automobile/automobile_make/data_miner.rb +1 -1
  15. data/lib/earth/automobile/automobile_make_fleet_year/data_miner.rb +1 -1
  16. data/lib/earth/automobile/automobile_make_model_year_variant/data_miner.rb +2 -16
  17. data/lib/earth/automobile/automobile_make_model_year_variant.rb +0 -1
  18. data/lib/earth/automobile/automobile_size_class/data_miner.rb +2 -2
  19. data/lib/earth/automobile/automobile_size_class_year/data_miner.rb +1 -1
  20. data/lib/earth/automobile/automobile_type_fuel_control/data_miner.rb +1 -1
  21. data/lib/earth/automobile/automobile_type_fuel_year/data_miner.rb +1 -1
  22. data/lib/earth/automobile/automobile_type_fuel_year_control/data_miner.rb +1 -1
  23. data/lib/earth/automobile/automobile_type_year/data_miner.rb +1 -1
  24. data/lib/earth/automobile/data_miner.rb +0 -1
  25. data/lib/earth/automobile.rb +0 -1
  26. data/lib/earth/bus/bus_class/data_miner.rb +1 -1
  27. data/lib/earth/bus/bus_fuel/data_miner.rb +3 -3
  28. data/lib/earth/bus/bus_fuel_control/data_miner.rb +1 -1
  29. data/lib/earth/bus/bus_fuel_year_control/data_miner.rb +1 -1
  30. data/lib/earth/computation/computation_platform/data_miner.rb +1 -1
  31. data/lib/earth/computation/data_center_company/data_miner.rb +1 -1
  32. data/lib/earth/computation/server_type/data_miner.rb +1 -1
  33. data/lib/earth/computation/server_type_alias/data_miner.rb +1 -1
  34. data/lib/earth/diet/food_group/data_miner.rb +1 -1
  35. data/lib/earth/fuel/fuel/data_miner.rb +2 -2
  36. data/lib/earth/fuel/fuel_price/data_miner.rb +1 -1
  37. data/lib/earth/fuel/fuel_type/data_miner.rb +1 -1
  38. data/lib/earth/fuel/fuel_year/data_miner.rb +1 -1
  39. data/lib/earth/fuel/greenhouse_gas/data_miner.rb +1 -1
  40. data/lib/earth/hospitality/lodging_class/data_miner.rb +1 -1
  41. data/lib/earth/locality/census_division/data_miner.rb +2 -2
  42. data/lib/earth/locality/country/data_miner.rb +1 -1
  43. data/lib/earth/locality/egrid_subregion/data_miner.rb +1 -1
  44. data/lib/earth/locality/petroleum_administration_for_defense_district/data_miner.rb +1 -1
  45. data/lib/earth/locality/state/data_miner.rb +1 -1
  46. data/lib/earth/rail/rail_class/data_miner.rb +1 -1
  47. data/lib/earth/residence/air_conditioner_use/data_miner.rb +1 -1
  48. data/lib/earth/residence/residence_fuel_type/data_miner.rb +1 -1
  49. data/lib/earth/shipping/carrier/data_miner.rb +1 -1
  50. data/lib/earth/shipping/carrier_mode/data_miner.rb +1 -1
  51. data/lib/earth/shipping/shipment_mode/data_miner.rb +1 -1
  52. data/lib/earth/version.rb +1 -1
  53. data/spec/earth_spec.rb +2 -2
  54. metadata +38 -116
  55. data/features/automobile_fuel_type.feature +0 -34
  56. data/features/support/imports/automobile_fuel_type_bad.csv +0 -3
  57. data/features/support/imports/automobile_fuel_type_good.csv +0 -3
  58. data/lib/earth/automobile/automobile_fuel_type/data_miner.rb +0 -115
  59. data/lib/earth/automobile/automobile_fuel_type.rb +0 -17
data/README.markdown CHANGED
@@ -8,7 +8,7 @@ The data that these models represent can be pulled from http://data.brighterplan
8
8
 
9
9
  require 'earth'
10
10
  Earth.init :automobile, :locality
11
- ft = AutomobileFuelType.first
11
+ ft = AutomobileFuel.first
12
12
  ...
13
13
 
14
14
  You can also run data imports via the data_miner gem.
data/Rakefile CHANGED
@@ -5,23 +5,51 @@ Bundler::GemHelper.install_tasks
5
5
  require 'bueller'
6
6
  Bueller::Tasks.new
7
7
 
8
- begin
9
- require 'rake/rdoctask'
10
- Rake::RDocTask.new do |rdoc|
11
- rdoc.rdoc_dir = 'rdoc'
12
- rdoc.title = 'emitter'
13
- rdoc.options << '--line-numbers' << '--inline-source'
14
- rdoc.rdoc_files.include('README*')
15
- rdoc.rdoc_files.include('lib/**/*.rb')
8
+ task :console do
9
+ Earth.init :all
10
+
11
+ require 'irb'
12
+ ARGV.clear
13
+ IRB.start
14
+ end
15
+
16
+ desc 'Run all cucumber tests'
17
+ Cucumber::Rake::Task.new(:features) do |t|
18
+ if ENV['CUCUMBER_FORMAT']
19
+ t.cucumber_opts = "features --format #{ENV['CUCUMBER_FORMAT']}"
20
+ else
21
+ t.cucumber_opts = 'features --format pretty'
16
22
  end
17
- rescue LoadError
18
- puts "Rdoc is not available"
19
23
  end
20
24
 
21
- require 'sniff'
22
- require 'sniff/rake_tasks'
23
- Sniff::RakeTasks.define_tasks do |t|
24
- t.earth_domains = :all
25
- t.cucumber = true
26
- t.rspec = true
25
+ desc "Run cucumber tests with RCov"
26
+ Cucumber::Rake::Task.new(:features_with_coverage) do |t|
27
+ t.cucumber_opts = "features --format pretty"
28
+ t.rcov = true
29
+ t.rcov_opts = ['--exclude', 'features']
30
+ end
31
+
32
+ require 'rspec/core/rake_task'
33
+
34
+ desc "Run all examples"
35
+ RSpec::Core::RakeTask.new(:examples) do |c|
36
+ c.rspec_opts = '-Ispec'
37
+ end
38
+
39
+ desc "Run specs with RCov"
40
+ RSpec::Core::RakeTask.new(:examples_with_coverage) do |t|
41
+ t.rcov = true
42
+ t.rcov_opts = ['--exclude', 'spec']
43
+ t.rspec_opts = '-Ispec'
44
+ end
45
+
46
+ task :test => [:features, :examples]
47
+ task :default => :test
48
+
49
+ require 'earth/version'
50
+ Rake::RDocTask.new do |rdoc|
51
+ rdoc.rdoc_dir = 'rdoc'
52
+ rdoc.title = "#{gemname} #{Earth::VERSION}"
53
+ rdoc.rdoc_files.include('README*')
54
+ rdoc.rdoc_files.include('lib/**/*.rb')
27
55
  end
data/earth.gemspec CHANGED
@@ -4,8 +4,8 @@ require "earth/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "earth"
7
- s.version = "0.4.4"
8
- s.date = "2011-02-25"
7
+ s.version = Earth::VERSION
8
+ s.date = "2011-03-04"
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.authors = ["Seamus Abshere", "Derek Kastner", "Andy Rossmeissl"]
11
11
  s.email = %q{andy@rossmeissl.net}
@@ -28,14 +28,10 @@ Gem::Specification.new do |s|
28
28
  s.rubygems_version = %q{1.3.7}
29
29
 
30
30
  s.add_runtime_dependency 'activerecord', '~> 3'
31
+ s.add_runtime_dependency 'cohort_scope', '>= 0.0.7'
31
32
  s.add_runtime_dependency 'data_miner', '~> 1.1.1'
32
- s.add_runtime_dependency 'errata'
33
33
  s.add_runtime_dependency 'falls_back_on', '>= 0.0.3'
34
- s.add_runtime_dependency 'geokit', '>= 1.5.0'
35
34
  s.add_runtime_dependency 'geokit-rails'
36
- s.add_runtime_dependency 'cohort_scope', '>= 0.0.7'
37
- s.add_runtime_dependency 'conversions', '>= 1.4.5'
38
- s.add_runtime_dependency 'weighted_average', '>= 0.0.4'
39
35
  s.add_runtime_dependency 'loose_tight_dictionary', '>= 0.0.8'
40
- s.add_development_dependency 'sniff', '~> 0.6.1'
36
+ s.add_runtime_dependency 'weighted_average', '>= 0.0.4'
41
37
  end
@@ -9,9 +9,9 @@ Feature: Data import for AutomobileMakeModelYearVariant
9
9
  Then the verification should be successful
10
10
 
11
11
  # FIXME TODO
12
- # Scenario: Successfully verifying that fuel type code is found in AutomobileFuelType
12
+ # Scenario: Successfully verifying that fuel type code is found in AutomobileFuel
13
13
  # Given a "AutomobileMakeModelYearVariant" data import fetches results listed in "automobile_make_model_year_variant_good"
14
- # When a data import verifies "Fuel type code should be found in AutomobileFuelType"
14
+ # When a data import verifies "Fuel type code should be found in AutomobileFuel"
15
15
  # Then the verification should be successful
16
16
 
17
17
  Scenario: Successfully verifying that fuel efficiencies are greater than zero
@@ -30,9 +30,9 @@ Feature: Data import for AutomobileMakeModelYearVariant
30
30
  Then the verification should not be successful
31
31
 
32
32
  # FIXME TODO
33
- # Scenario: Failing to verify that fuel type code is found in AutomobileFuelType
33
+ # Scenario: Failing to verify that fuel type code is found in AutomobileFuel
34
34
  # Given a "AutomobileMakeModelYearVariant" data import fetches results listed in "automobile_make_model_year_variant_bad"
35
- # When a data import verifies "Fuel type code should be found in AutomobileFuelType"
35
+ # When a data import verifies "Fuel type code should be found in AutomobileFuel"
36
36
  # Then the verification should not be successful
37
37
 
38
38
  Scenario: Failing to verify that fuel efficiencies are greater than zero
@@ -0,0 +1,32 @@
1
+ Given /^a "([^\"]*)" data import fetches results listed in "(.*)"$/ do |model, file_name|
2
+ @data_import_model = model.constantize
3
+ table_name = @data_import_model.table_name
4
+
5
+ fixture_path = File.expand_path("features/support/imports/#{file_name}", Dir.pwd)
6
+
7
+ fixture = Fixtures.new @data_import_model.connection, table_name, model, fixture_path
8
+
9
+ @data_import_model.connection.transaction(:requires_new => true) do
10
+ fixture.delete_existing_fixtures
11
+ fixture.insert_fixtures
12
+ end
13
+ end
14
+
15
+ When /^a data import verifies "(.*)"$/ do |verification_step_name|
16
+ @verification = @data_import_model.data_miner_config.steps.find { |f|
17
+ f.respond_to?(:description) and f.description == verification_step_name
18
+ }
19
+ @verification_result = begin
20
+ @verification.run
21
+ true
22
+ rescue => e
23
+ false
24
+ end
25
+ end
26
+
27
+ Then /^the verification should be successful$/ do
28
+ @verification_result.should be_true
29
+ end
30
+ Then /^the verification should not be successful$/ do
31
+ @verification_result.should be_false
32
+ end
@@ -4,7 +4,10 @@ require 'bundler'
4
4
  Bundler.setup
5
5
 
6
6
  require 'data_miner'
7
- DataMiner.logger = Logger.new(nil)
7
+ DataMiner.logger = Logger.new nil
8
8
 
9
- require 'sniff'
10
- Sniff.init File.expand_path('../..', File.dirname(__FILE__)), :earth => :all, :cucumber => true
9
+ require 'active_record'
10
+ require 'sqlite3'
11
+ ActiveRecord::Base.logger = Logger.new nil
12
+ ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => ':memory:'
13
+ Earth.init :all, :apply_schemas => true
@@ -1,3 +1,3 @@
1
- row_hash,year,fuel_type_code,fuel_efficiency,fuel_efficiency_city,fuel_efficiency_highway,fuel_efficiency_units,fuel_efficiency_city_units,fuel_efficiency_highway_units
1
+ row_hash,year,fuel_code,fuel_efficiency,fuel_efficiency_city,fuel_efficiency_highway,fuel_efficiency_units,fuel_efficiency_city_units,fuel_efficiency_highway_units
2
2
  a1,2000,D,12.0,10.0,15.0,kilometres_per_litre,kilometres_per_litre,kilometres_per_litre
3
3
  b2,2011,P,0,-10,0,foo,bar
@@ -1,3 +1,3 @@
1
- row_hash,year,fuel_type_code,fuel_efficiency,fuel_efficiency_city,fuel_efficiency_highway,fuel_efficiency_units,fuel_efficiency_city_units,fuel_efficiency_highway_units
1
+ row_hash,year,fuel_code,fuel_efficiency,fuel_efficiency_city,fuel_efficiency_highway,fuel_efficiency_units,fuel_efficiency_city_units,fuel_efficiency_highway_units
2
2
  a1,2000,D,12.0,10.0,15.0,kilometres_per_litre,kilometres_per_litre,kilometres_per_litre
3
3
  b2,2010,X,20.5,20.0,21.0,kilometres_per_litre,kilometres_per_litre,kilometres_per_litre
@@ -108,7 +108,7 @@ Aircraft.class_eval do
108
108
  end
109
109
 
110
110
  import "a curated list of aircraft",
111
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDJFblR4MDE1RGtnLVM1S2JHRGZpT3c&hl=en&single=true&gid=0&output=csv' do
111
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDJFblR4MDE1RGtnLVM1S2JHRGZpT3c&hl=en&gid=0&output=csv' do
112
112
  key 'bp_code'
113
113
  store 'icao_code', :nullify => true
114
114
  store 'bts_code', :nullify => true
@@ -11,7 +11,7 @@ AircraftClass.class_eval do
11
11
  end
12
12
 
13
13
  import "a list of Brighter Planet-defined aircraft classes",
14
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGNBbHFibmxJUFprQkUwZHp6VU51Smc&hl=en&single=true&gid=0&output=csv' do
14
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGNBbHFibmxJUFprQkUwZHp6VU51Smc&hl=en&gid=0&output=csv' do
15
15
  key 'code', :field_name => 'aircraft_class_code'
16
16
  store 'name'
17
17
  end
@@ -7,7 +7,7 @@ FlightDistanceClass.class_eval do
7
7
  end
8
8
 
9
9
  import "a list of distance classes taken from the WRI business travel tool and UK DEFRA/DECC GHG Conversion Factors for Company Reporting",
10
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdFBKM0xWaUhKVkxDRmdBVkE3VklxY2c&hl=en&single=true&gid=0&output=csv' do
10
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdFBKM0xWaUhKVkxDRmdBVkE3VklxY2c&hl=en&gid=0&output=csv' do
11
11
  key 'name'
12
12
  store 'distance', :units_field_name => 'distance_units'
13
13
  end
@@ -7,8 +7,8 @@ FlightSeatClass.class_eval do
7
7
  float 'multiplier'
8
8
  end
9
9
 
10
- import "a list of Brighter Planet-defined seat classes and pre-calculated multipliers",
11
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdG5zSER1QmFVVkhNcTM2cmhCMEJtWVE&hl=en&single=true&gid=0&output=csv' do
10
+ import "seat classes used in the WRI GHG Protocol calculation tools",
11
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdG5zSER1QmFVVkhNcTM2cmhCMEJtWVE&hl=en&gid=0&output=csv' do
12
12
  key 'name'
13
13
  store 'distance_class_name'
14
14
  store 'seat_class_name'
@@ -20,10 +20,12 @@ AutomobileFuel.class_eval do
20
20
  string 'n2o_emission_factor_units'
21
21
  float 'hfc_emission_factor'
22
22
  string 'hfc_emission_factor_units'
23
+ float 'emission_factor' # DEPRECATED but motorcycle needs this
24
+ string 'emission_factor_units' # DEPRECATED but motorcycle needs this
23
25
  end
24
26
 
25
27
  import "a list of pure automobile fuels",
26
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdE9xTEdueFM2R0diNTgxUlk1QXFSb2c&output=csv' do
28
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdE9xTEdueFM2R0diNTgxUlk1QXFSb2c&gid=0&output=html' do
27
29
  key 'name'
28
30
  store 'code'
29
31
  store 'base_fuel_name'
@@ -32,7 +34,7 @@ AutomobileFuel.class_eval do
32
34
  end
33
35
 
34
36
  import "a list of blended automobile fuels",
35
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEswNGIxM0U4U0N1UUppdWw2ejJEX0E&output=csv' do
37
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEswNGIxM0U4U0N1UUppdWw2ejJEX0E&gid=0&output=csv' do
36
38
  key 'name'
37
39
  store 'code'
38
40
  store 'base_fuel_name'
@@ -96,6 +98,11 @@ AutomobileFuel.class_eval do
96
98
  end
97
99
  end
98
100
 
101
+ process "Derive emission factor" do
102
+ update_all "emission_factor = co2_emission_factor + ch4_emission_factor + n2o_emission_factor + hfc_emission_factor,
103
+ emission_factor_units = 'kilograms_co2e_per_litre'"
104
+ end
105
+
99
106
  # FIXME TODO verify code somehow
100
107
 
101
108
  %w{ base_fuel_name distance_key ef_key }.each do |attribute|
@@ -23,7 +23,7 @@ AutomobileMake.class_eval do
23
23
  # sabshere 1/31/11 add Avanti, DaimlerChrysler, IHC, Tesla, etc.
24
24
  process "Derive extra manufacturer names from CAFE data" do
25
25
  AutomobileMakeFleetYear.run_data_miner!
26
- INSERT IGNORE %{INTO automobile_makes(name)
26
+ INSERT_IGNORE %{INTO automobile_makes(name)
27
27
  SELECT DISTINCT automobile_make_fleet_years.make_name
28
28
  FROM automobile_make_fleet_years
29
29
  }
@@ -12,7 +12,7 @@ AutomobileMakeFleetYear.class_eval do
12
12
  end
13
13
 
14
14
  import "annual corporate average fuel economy data for domestic and imported vehicle fleets from the NHTSA",
15
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEdXWXB6dkVLWkowLXhYSFVUT01sS2c&hl=en&single=true&gid=0&output=csv',
15
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEdXWXB6dkVLWkowLXhYSFVUT01sS2c&hl=en&gid=0&output=csv',
16
16
  :errata => { 'url' => 'http://static.brighterplanet.com/science/data/transport/automobiles/make_fleet_years/errata.csv' },
17
17
  :select => lambda { |row| row['volume'].to_i > 0 } do
18
18
  key 'name', :synthesize => lambda { |row| [ row['manufacturer_name'], row['year_content'], row['fleet'][2,2] ].join ' ' }
@@ -271,7 +271,6 @@ AutomobileMakeModelYearVariant.class_eval do
271
271
  string 'fuel_efficiency_city_units'
272
272
  float 'fuel_efficiency_highway'
273
273
  string 'fuel_efficiency_highway_units'
274
- string 'fuel_type_code'
275
274
  string 'fuel_code'
276
275
  string 'transmission'
277
276
  string 'drive'
@@ -315,7 +314,6 @@ AutomobileMakeModelYearVariant.class_eval do
315
314
  store 'name', :field_name => 'model'
316
315
  store 'make_name', :field_name => 'make'
317
316
  store 'year'
318
- store 'fuel_type_code', :field_name => 'fuel_type'
319
317
  store 'fuel_code', :field_name => 'fuel_type'
320
318
  store 'fuel_efficiency_highway', :static => nil, :units => :kilometres_per_litre
321
319
  store 'fuel_efficiency_city', :static => nil, :units => :kilometres_per_litre
@@ -354,7 +352,6 @@ AutomobileMakeModelYearVariant.class_eval do
354
352
  key 'row_hash'
355
353
  store 'name', :field_name => 'model'
356
354
  store 'make_name', :field_name => 'make'
357
- store 'fuel_type_code', :field_name => 'fl'
358
355
  store 'fuel_code', :field_name => 'fl'
359
356
  store 'fuel_efficiency_highway', :static => nil, :units => :kilometres_per_litre
360
357
  store 'fuel_efficiency_city', :static => nil, :units => :kilometres_per_litre
@@ -389,7 +386,6 @@ AutomobileMakeModelYearVariant.class_eval do
389
386
  key 'row_hash'
390
387
  store 'name', :field_name => 'model'
391
388
  store 'make_name', :field_name => 'make'
392
- store 'fuel_type_code', :field_name => 'FUEL TYPE'
393
389
  store 'fuel_code', :field_name => 'FUEL TYPE'
394
390
  store 'fuel_efficiency_highway', :static => nil, :units => :kilometres_per_litre
395
391
  store 'fuel_efficiency_city', :static => nil, :units => :kilometres_per_litre
@@ -420,7 +416,6 @@ AutomobileMakeModelYearVariant.class_eval do
420
416
  key 'row_hash'
421
417
  store 'name', :field_name => 'model'
422
418
  store 'make_name', :field_name => 'make'
423
- store 'fuel_type_code'
424
419
  store 'fuel_code', :field_name => 'fuel_type_code'
425
420
  store 'fuel_efficiency_highway', :static => nil, :units => :kilometres_per_litre
426
421
  store 'fuel_efficiency_city', :static => nil, :units => :kilometres_per_litre
@@ -479,17 +474,8 @@ AutomobileMakeModelYearVariant.class_eval do
479
474
  end
480
475
  end
481
476
 
482
- # FIXME TODO
483
- # verify "Fuel type code should be found in AutomobileFuelType" do
484
- # valid_codes = AutomobileFuelType.all.map(&:code)
485
- # puts valid_codes
486
- # AutomobileMakeModelVariant.all.each do |variant|
487
- # unless valid_codes.include? variant.fuel_type_code
488
- # raise "Invalid fuel type code for AutomobileMakeModelYearVariant #{variant.row_hash}: #{variant.fuel_type_code} (should be found in AutomobileFuelType)"
489
- # end
490
- # end
491
- # end
492
- #
477
+ # FIXME TODO verify fuel code appears in AutomobileFuel
478
+
493
479
  verify "Fuel efficiencies should be greater than zero" do
494
480
  AutomobileMakeModelYearVariant.all.each do |variant|
495
481
  [:fuel_efficiency, :fuel_efficiency_city, :fuel_efficiency_highway].each do |type|
@@ -4,7 +4,6 @@ class AutomobileMakeModelYearVariant < ActiveRecord::Base
4
4
  belongs_to :make, :class_name => 'AutomobileMake', :foreign_key => 'make_name'
5
5
  belongs_to :make_model, :class_name => 'AutomobileMakeModel', :foreign_key => 'make_model_name'
6
6
  belongs_to :make_model_year, :class_name => 'AutomobileMakeModelYear', :foreign_key => 'make_model_year_name'
7
- belongs_to :fuel_type, :class_name => 'AutomobileFuelType', :foreign_key => 'fuel_type_code'
8
7
  belongs_to :fuel, :class_name => 'AutomobileFuel', :foreign_key => 'fuel_code', :primary_key => 'code'
9
8
 
10
9
  data_miner do
@@ -17,7 +17,7 @@ AutomobileSizeClass.class_eval do
17
17
 
18
18
  # FIXME TODO pull this from AutomobileSizeClassYear
19
19
  import "a list of size classes and pre-calculated fuel efficiencies",
20
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHlRUE5IcWlrRENhN0EtUldPTy1rX1E&single=true&gid=0&output=csv' do
20
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHlRUE5IcWlrRENhN0EtUldPTy1rX1E&gid=0&output=csv' do
21
21
  key 'name'
22
22
  store 'type_name'
23
23
  store 'fuel_efficiency_city', :units_field_name => 'fuel_efficiency_city_units'
@@ -35,7 +35,7 @@ AutomobileSizeClass.class_eval do
35
35
  end
36
36
 
37
37
  import "pre-calculated fuel efficiency multipliers",
38
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGt2NnhXLXUxNFRJSzczU3BkSHB3enc&hl=en&single=true&gid=0&output=csv' do
38
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGt2NnhXLXUxNFRJSzczU3BkSHB3enc&hl=en&gid=0&output=csv' do
39
39
  key 'name'
40
40
  store 'hybrid_fuel_efficiency_city_multiplier'
41
41
  store 'hybrid_fuel_efficiency_highway_multiplier'
@@ -12,7 +12,7 @@ AutomobileSizeClassYear.class_eval do
12
12
  end
13
13
 
14
14
  import "automobile size class year fuel efficiencies from the 2010 EPA Fuel Economy Trends report",
15
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDZOLWdDdlZja04xZkJYc3NjeGxQamc&hl=en&single=true&gid=0&output=csv' do
15
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDZOLWdDdlZja04xZkJYc3NjeGxQamc&hl=en&gid=0&output=csv' do
16
16
  key 'name'
17
17
  store 'size_class_name'
18
18
  store 'year'
@@ -12,7 +12,7 @@ AutomobileTypeFuelControl.class_eval do
12
12
  end
13
13
 
14
14
  import "automobile type fuel control data derived from the 2010 EPA GHG Inventory",
15
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEloSTU5YUNOUXRFRUcxWHlTUi1GMkE&hl=en&output=csv' do
15
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEloSTU5YUNOUXRFRUcxWHlTUi1GMkE&hl=en&gid=0&output=csv' do
16
16
  key 'name'
17
17
  store 'type_name'
18
18
  store 'fuel_common_name'
@@ -75,7 +75,7 @@ AutomobileTypeFuelYear.class_eval do
75
75
  end
76
76
 
77
77
  import "fuel consumption derived from the 2010 EPA GHG Inventory",
78
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHBCMFhLRTFTZENsd0dPUGUyYlJna0E&hl=en&output=csv' do
78
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHBCMFhLRTFTZENsd0dPUGUyYlJna0E&hl=en&gid=0&output=csv' do
79
79
  key 'name'
80
80
  store 'fuel_consumption', :units_field_name => 'fuel_consumption_units'
81
81
  end
@@ -12,7 +12,7 @@ AutomobileTypeFuelYearControl.class_eval do
12
12
  end
13
13
 
14
14
  import "automobile type fuel year control data derived from the 2010 EPA GHG Inventory",
15
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGpQV2xMdlZkV1JzVlVTeU5ZalF6elE&hl=en&output=csv' do
15
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGpQV2xMdlZkV1JzVlVTeU5ZalF6elE&hl=en&gid=0&output=csv' do
16
16
  key 'name'
17
17
  store 'type_name'
18
18
  store 'fuel_common_name'
@@ -11,7 +11,7 @@ AutomobileTypeYear.class_eval do
11
11
  end
12
12
 
13
13
  import "automobile type year air conditioning emissions derived from the 2010 EPA GHG Inventory",
14
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdFoyTWhDeHpndTV5Ny1aX0sxR1ljSFE&hl=en&output=csv' do
14
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdFoyTWhDeHpndTV5Ny1aX0sxR1ljSFE&hl=en&gid=0&output=csv' do
15
15
  key 'name'
16
16
  store 'type_name'
17
17
  store 'year'
@@ -1,5 +1,4 @@
1
1
  require 'earth/automobile/automobile_fuel/data_miner'
2
- require 'earth/automobile/automobile_fuel_type/data_miner'
3
2
  require 'earth/automobile/automobile_make/data_miner'
4
3
  require 'earth/automobile/automobile_make_fleet_year/data_miner'
5
4
  require 'earth/automobile/automobile_make_year/data_miner'
@@ -1,5 +1,4 @@
1
1
  require 'earth/automobile/automobile_fuel'
2
- require 'earth/automobile/automobile_fuel_type'
3
2
  require 'earth/automobile/automobile_make'
4
3
  require 'earth/automobile/automobile_make_fleet_year'
5
4
  require 'earth/automobile/automobile_make_year'
@@ -30,7 +30,7 @@ BusClass.class_eval do
30
30
  end
31
31
 
32
32
  import "a list of bus classes and pre-calculated trip and fuel use characteristics",
33
- :url => 'https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AoQJbWqPrREqdGRsSnJoS1hraGJvR012cDROWXFPbVE&output=csv' do
33
+ :url => 'https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AoQJbWqPrREqdGRsSnJoS1hraGJvR012cDROWXFPbVE&gid=0&output=csv' do
34
34
  key 'name'
35
35
  store 'distance', :units_field_name => 'distance_units'
36
36
  store 'passengers'
@@ -22,13 +22,13 @@ BusFuel.class_eval do
22
22
  end
23
23
 
24
24
  import "a list of bus fuels without emission factors",
25
- :url => 'https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AoQJbWqPrREqdGNscUdpbkdBUmJkTlFxdEtfSEdJS2c&output=csv' do
25
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGNscUdpbkdBUmJkTlFxdEtfSEdJS2c&gid=0&output=csv' do
26
26
  key 'name'
27
27
  store 'fuel_name'
28
28
  end
29
29
 
30
30
  import "a list of bus fuels and their emission factors",
31
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHAtZ1YyWmxuS1JWUzZYSVhhdUViYmc&output=csv' do
31
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHAtZ1YyWmxuS1JWUzZYSVhhdUViYmc&gid=0&output=csv' do
32
32
  key 'name'
33
33
  store 'fuel_name'
34
34
  store 'ch4_emission_factor', :units_field_name => 'ch4_emission_factor_units'
@@ -36,7 +36,7 @@ BusFuel.class_eval do
36
36
  end
37
37
 
38
38
  import "energy contents for compressed/liquified natural gas fuels",
39
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDFfdHMycVB6dTkyUFFNM0x4b19TQVE&output=csv' do
39
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDFfdHMycVB6dTkyUFFNM0x4b19TQVE&gid=0&output=csv' do
40
40
  key 'name'
41
41
  store 'energy_content', :units_field_name => 'energy_content_units'
42
42
  end
@@ -11,7 +11,7 @@ BusFuelControl.class_eval do
11
11
  end
12
12
 
13
13
  import "a list of bus fuel controls",
14
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEw1QW80VVJhaXRkUURQSFhHczNyVWc&output=csv' do
14
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEw1QW80VVJhaXRkUURQSFhHczNyVWc&gid=0&output=csv' do
15
15
  key 'name'
16
16
  store 'bus_fuel_name'
17
17
  store 'control'
@@ -14,7 +14,7 @@ BusFuelYearControl.class_eval do
14
14
  end
15
15
 
16
16
  import "a list of bus fuel year controls",
17
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGhHQkZPZW4zbXYzZ3NkYThBWnQ2QXc&output=csv' do
17
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGhHQkZPZW4zbXYzZ3NkYThBWnQ2QXc&gid=0&output=csv' do
18
18
  key 'name'
19
19
  store 'bus_fuel_name'
20
20
  store 'year'
@@ -6,7 +6,7 @@ ComputationPlatform.class_eval do
6
6
  end
7
7
 
8
8
  import "a list of computation platforms and the data center company they use",
9
- :url => 'https://spreadsheets.google.com/pub?key=0AkCJNpm9Ks6JdG5zVER5THhXRlE4N0RXTklVaS03Ymc&single=true&gid=0&output=csv' do
9
+ :url => 'https://spreadsheets.google.com/pub?key=0AkCJNpm9Ks6JdG5zVER5THhXRlE4N0RXTklVaS03Ymc&gid=0&gid=0&output=csv' do
10
10
  key 'name'
11
11
  store 'data_center_company_name'
12
12
  end
@@ -6,7 +6,7 @@ DataCenterCompany.class_eval do
6
6
  end
7
7
 
8
8
  import "a list of data center companies and their power usage effectiveness",
9
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdFlxZVZLai01WWJOOTFiaUd1blF6VkE&hl=en&single=true&gid=0&output=csv' do
9
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdFlxZVZLai01WWJOOTFiaUd1blF6VkE&hl=en&gid=0&output=csv' do
10
10
  key 'name'
11
11
  store 'power_usage_effectiveness'
12
12
  end
@@ -12,7 +12,7 @@ ServerType.class_eval do
12
12
  end
13
13
 
14
14
  import "a list of server types and their characteristics",
15
- :url => 'https://spreadsheets.google.com/pub?key=0AkCJNpm9Ks6JdGExaW1ic2c0d2s1ZmpzeUdOa2kyRlE&hl=en&single=true&gid=0&output=csv' do
15
+ :url => 'https://spreadsheets.google.com/pub?key=0AkCJNpm9Ks6JdGExaW1ic2c0d2s1ZmpzeUdOa2kyRlE&hl=en&gid=0&output=csv' do
16
16
  key 'name'
17
17
  store 'data_center_company_name'
18
18
  store 'cpu', :units_field_name => 'cpu_units'
@@ -7,7 +7,7 @@ ServerTypeAlias.class_eval do
7
7
  end
8
8
 
9
9
  import "a list of server type aliases and their characteristics",
10
- :url => 'https://spreadsheets.google.com/pub?key=0AkCJNpm9Ks6JdDdkVlBzSUYweFN0OHBreEN6YTdTZ3c&hl=en&single=true&gid=0&output=csv' do
10
+ :url => 'https://spreadsheets.google.com/pub?key=0AkCJNpm9Ks6JdDdkVlBzSUYweFN0OHBreEN6YTdTZ3c&hl=en&gid=0&output=csv' do
11
11
  key 'name', :field_name => 'alias'
12
12
  store 'server_type_name'
13
13
  store 'platform_name'
@@ -16,7 +16,7 @@ FoodGroup.class_eval do
16
16
  end
17
17
 
18
18
  import "energy and units",
19
- :url => 'http://spreadsheets.google.com/pub?key=trkBEq5oFnUQE76gQ6VpQgw' do
19
+ :url => 'http://spreadsheets.google.com/pub?key=trkBEq5oFnUQE76gQ6VpQgw&gid=0&output=csv' do
20
20
  key 'name'
21
21
  store 'energy', :units => 'unknown' #FIXME this needs to be "kilocalories per" and then whatever the suggested imperial measurement is
22
22
  store 'suggested_imperial_measurement', :field_name => 'friendly_units'
@@ -24,7 +24,7 @@ Fuel.class_eval do
24
24
  end
25
25
 
26
26
  import "fuels with non-variable characteristics",
27
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGJmYkdtajZyV3Byb0lrd21xLVhXUGc&hl=en&output=csv' do
27
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGJmYkdtajZyV3Byb0lrd21xLVhXUGc&hl=en&gid=0&output=csv' do
28
28
  key 'name'
29
29
  store 'energy_content', :units_field_name => 'energy_content_units'
30
30
  store 'carbon_content', :units_field_name => 'carbon_content_units'
@@ -33,7 +33,7 @@ Fuel.class_eval do
33
33
  end
34
34
 
35
35
  import "densities for aircraft fuels",
36
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHBjTVE4NmRlc05iUHVZR1E3eEJwOGc&hl=en&output=csv' do
36
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHBjTVE4NmRlc05iUHVZR1E3eEJwOGc&hl=en&gid=0&output=csv' do
37
37
  key 'name'
38
38
  store 'density', :units_field_name => 'density_units'
39
39
  end
@@ -11,7 +11,7 @@ FuelPrice.class_eval do
11
11
  end
12
12
 
13
13
  import 'fuel prices derived from the EIA',
14
- :url => 'http://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHlSdXJoOFB5aEpHenJQbTVJdS1pMVE',
14
+ :url => 'http://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHlSdXJoOFB5aEpHenJQbTVJdS1pMVE&gid=0&output=csv',
15
15
  :select => lambda { |row| row['fuel_type_name'].present? } do
16
16
  key 'name', :field_name => 'fuel_type_name'
17
17
  store 'price', :units_field_name => 'price_units'
@@ -28,7 +28,7 @@ FuelType.class_eval do
28
28
  # end
29
29
 
30
30
  import "a list of fuels and their emission factors and densities",
31
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDR3RjlTcWlsLTc2TzQ0cERTMElJbHc&single=true&gid=0&output=csv' do
31
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDR3RjlTcWlsLTc2TzQ0cERTMElJbHc&gid=0&output=csv' do
32
32
  key 'name', :field_name => 'fuel'
33
33
  store 'emission_factor', :units_field_name => 'emission_factor_units'
34
34
  store 'average_purchase_volume', :units_field_name => 'average_purchase_volume_units'
@@ -17,7 +17,7 @@ FuelYear.class_eval do
17
17
  end
18
18
 
19
19
  import "fuels with annually variable characteristics, derived from the 2010 EPA GHG Inventory",
20
- :url => 'https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AoQJbWqPrREqdFZVSlZ3SUZsTzZLVTB5bVk5THdBN2c&output=csv' do
20
+ :url => 'https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AoQJbWqPrREqdFZVSlZ3SUZsTzZLVTB5bVk5THdBN2c&gid=0&output=csv' do
21
21
  key 'name'
22
22
  store 'fuel_name'
23
23
  store 'year'
@@ -10,7 +10,7 @@ GreenhouseGas.class_eval do
10
10
  end
11
11
 
12
12
  import "greenhouse gas global warming potentials taken from the IPCC AR4",
13
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdE1tUjBwS1ZHZnBUUG1XcVpkOTVHOVE&single=true&gid=0&output=csv' do
13
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdE1tUjBwS1ZHZnBUUG1XcVpkOTVHOVE&gid=0&output=csv' do
14
14
  key 'name'
15
15
  store 'abbreviation'
16
16
  store 'ipcc_report'