earth 0.4.9 → 0.4.10

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -34,7 +34,11 @@ end
34
34
  require 'rspec/core/rake_task'
35
35
  desc "Run all examples"
36
36
  RSpec::Core::RakeTask.new(:examples) do |c|
37
- c.rspec_opts = '-Ispec'
37
+ if ENV['RSPEC_FORMAT']
38
+ c.rspec_opts = "-Ispec --format #{ENV['RSPEC_FORMAT']}"
39
+ else
40
+ c.rspec_opts = '-Ispec'
41
+ end
38
42
  end
39
43
 
40
44
  desc "Run specs with RCov"
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ unless RUBY_VERSION >= '1.9'
4
+ require 'rubygems'
5
+ end
6
+
7
+ if File.exist?(File.join(Dir.pwd, 'earth.gemspec'))
8
+ require 'bundler'
9
+ Bundler.setup
10
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
11
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
12
+ end
13
+
14
+ require 'active_support/all'
15
+ require 'active_record'
16
+
17
+ ActiveRecord::Schema.verbose = false
18
+ begin
19
+ ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
20
+ rescue ArgumentError
21
+ ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :dbfile => ':memory:')
22
+ end
23
+
24
+ require 'earth'
25
+
26
+ Earth.init :load_data_miner => true, :apply_schemas => true
27
+
28
+ if ARGV[0].present?
29
+ eval ARGV[0]
30
+ else
31
+ $stderr.puts "Usage: earth_tester.rb 'ResidenceFuelPrice.run_data_miner!' (Note single quotes)"
32
+ end
@@ -27,12 +27,12 @@ Gem::Specification.new do |s|
27
27
  s.require_paths = ["lib"]
28
28
  s.rubygems_version = %q{1.3.7}
29
29
 
30
- s.add_runtime_dependency 'cohort_scope', '~> 0.1.5'
31
- s.add_runtime_dependency 'data_miner', '~> 1.1.4'
32
- s.add_runtime_dependency 'falls_back_on', '~> 0.1.3'
30
+ s.add_runtime_dependency 'cohort_scope', '>=0.2.0'
31
+ s.add_runtime_dependency 'data_miner'
32
+ s.add_runtime_dependency 'falls_back_on'
33
+ s.add_runtime_dependency 'fixed_width'
33
34
  s.add_runtime_dependency 'geokit-rails'
34
- s.add_runtime_dependency 'loose_tight_dictionary', '~> 0.0.10'
35
- s.add_runtime_dependency 'weighted_average', '~> 0.0.6'
35
+ s.add_runtime_dependency 'weighted_average'
36
36
  s.add_development_dependency 'bundler'
37
37
  s.add_development_dependency 'bueller'
38
38
  s.add_development_dependency 'cucumber'
@@ -3,9 +3,9 @@ Feature: Data import for AutomobileMakeModelYearVariant
3
3
  I want to import MakeModelYearVariant data
4
4
  So that I can perform variant-based calculations
5
5
 
6
- Scenario: Successfully verifying that year is from 1985 to 2010
6
+ Scenario: Successfully verifying that year is from 1985 to 2011
7
7
  Given a "AutomobileMakeModelYearVariant" data import fetches results listed in "automobile_make_model_year_variant_good"
8
- When a data import verifies "Year should be from 1985 to 2010"
8
+ When a data import verifies "Year should be from 1985 to 2011"
9
9
  Then the verification should be successful
10
10
 
11
11
  # FIXME TODO
@@ -24,9 +24,9 @@ Feature: Data import for AutomobileMakeModelYearVariant
24
24
  When a data import verifies "Fuel efficiency units should be kilometres per litre"
25
25
  Then the verification should be successful
26
26
 
27
- Scenario: Failing to verify that year is from 1985 to 2010
27
+ Scenario: Failing to verify that year is from 1985 to 2011
28
28
  Given a "AutomobileMakeModelYearVariant" data import fetches results listed in "automobile_make_model_year_variant_bad"
29
- When a data import verifies "Year should be from 1985 to 2010"
29
+ When a data import verifies "Year should be from 1985 to 2011"
30
30
  Then the verification should not be successful
31
31
 
32
32
  # FIXME TODO
@@ -1,3 +1,3 @@
1
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
- b2,2011,P,0,-10,0,foo,bar
3
+ b2,2012,P,0,-10,0,foo,bar
@@ -1,3 +1,3 @@
1
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
- b2,2010,X,20.5,20.0,21.0,kilometres_per_litre,kilometres_per_litre,kilometres_per_litre
3
+ b2,2011,X,20.5,20.0,21.0,kilometres_per_litre,kilometres_per_litre,kilometres_per_litre
@@ -6,8 +6,7 @@ require 'earth/inflectors'
6
6
  require 'data_miner'
7
7
  require 'falls_back_on'
8
8
  require 'weighted_average'
9
- require 'loose_tight_dictionary'
10
- require 'slither'
9
+ require 'fixed_width'
11
10
  require 'errata'
12
11
 
13
12
  # The earth module is an interface for establishing a taps server (used to fetch
@@ -89,7 +88,7 @@ module Earth
89
88
  if ActiveRecord::Base.connection.adapter_name.downcase == 'sqlite'
90
89
  {}
91
90
  else
92
- { :options => 'ENGINE=InnoDB default charset=utf8' }
91
+ { :options => 'ENGINE=InnoDB default charset=utf8 collate=utf8_general_ci' }
93
92
  end
94
93
  end
95
94
 
@@ -7,6 +7,7 @@ AutomobileMakeModel.class_eval do
7
7
  schema Earth.database_options do
8
8
  string 'name' # make + model
9
9
  string 'make_name'
10
+ string 'model_name' # model only
10
11
  float 'fuel_efficiency_city'
11
12
  string 'fuel_efficiency_city_units'
12
13
  float 'fuel_efficiency_highway'
@@ -15,8 +16,8 @@ AutomobileMakeModel.class_eval do
15
16
 
16
17
  process "Derive model names from automobile make model year variants" do
17
18
  AutomobileMakeModelYearVariant.run_data_miner!
18
- INSERT_IGNORE %{INTO automobile_make_models(name, make_name)
19
- SELECT automobile_make_model_year_variants.make_model_name, automobile_make_model_year_variants.make_name FROM automobile_make_model_year_variants WHERE LENGTH(automobile_make_model_year_variants.make_model_name) > 0 AND LENGTH(automobile_make_model_year_variants.make_name) > 0
19
+ INSERT_IGNORE %{INTO automobile_make_models(name, make_name, model_name)
20
+ SELECT automobile_make_model_year_variants.make_model_name, automobile_make_model_year_variants.make_name, automobile_make_model_year_variants.name FROM automobile_make_model_year_variants WHERE LENGTH(automobile_make_model_year_variants.make_name) > 0 AND LENGTH(automobile_make_model_year_variants.name) > 0
20
21
  }
21
22
  end
22
23
 
@@ -5,8 +5,9 @@ AutomobileMakeModelYear.class_eval do
5
5
  end
6
6
 
7
7
  schema Earth.database_options do
8
- string 'name'
8
+ string 'name' # make + model + year
9
9
  string 'make_name'
10
+ string 'model_name'
10
11
  string 'make_model_name'
11
12
  integer 'year'
12
13
  string 'make_year_name'
@@ -18,8 +19,8 @@ AutomobileMakeModelYear.class_eval do
18
19
 
19
20
  process "Derive model year names from automobile make model year variants" do
20
21
  AutomobileMakeModelYearVariant.run_data_miner!
21
- INSERT_IGNORE %{INTO automobile_make_model_years(name, make_name, make_model_name, year, make_year_name)
22
- SELECT automobile_make_model_year_variants.make_model_year_name, automobile_make_model_year_variants.make_name, automobile_make_model_year_variants.make_model_name, automobile_make_model_year_variants.year, automobile_make_model_year_variants.make_year_name FROM automobile_make_model_year_variants WHERE LENGTH(automobile_make_model_year_variants.make_name) > 0 AND LENGTH(automobile_make_model_year_variants.make_model_name) > 0
22
+ INSERT_IGNORE %{INTO automobile_make_model_years(name, make_name, model_name, make_model_name, year, make_year_name)
23
+ SELECT automobile_make_model_year_variants.make_model_year_name, automobile_make_model_year_variants.make_name, automobile_make_model_year_variants.name, automobile_make_model_year_variants.make_model_name, automobile_make_model_year_variants.year, automobile_make_model_year_variants.make_year_name FROM automobile_make_model_year_variants WHERE LENGTH(automobile_make_model_year_variants.make_name) > 0 AND LENGTH(automobile_make_model_year_variants.make_model_name) > 0
23
24
  }
24
25
  end
25
26
 
@@ -106,7 +106,7 @@ AutomobileMakeModelYearVariant.class_eval do
106
106
  }
107
107
 
108
108
  class AutomobileMakeModelYearVariant::ParserB
109
- ::Slither.define :fuel_economy_guide_b do |d|
109
+ ::FixedWidth.define :fuel_economy_guide_b do |d|
110
110
  d.rows do |row|
111
111
  row.trap { true } # there's only one section
112
112
  row.column 'active_year' , 4, :type => :integer # ACTIVE YEAR
@@ -372,10 +372,10 @@ AutomobileMakeModelYearVariant.class_eval do
372
372
  end
373
373
 
374
374
  # 2006--2009
375
- # FIXME TODO the 2007 FEG import fails: ArgumentError: unknown encoding name - WINDOWS-936
376
375
  {
377
376
  2006 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/06data.zip', :filename => '2006_FE_Guide_14-Nov-2005_download.csv' },
378
- 2007 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/07data.zip', :filename => '2007_FE_guide_ALL_no_sales_May_01_2007.xls' },
377
+ # the 07data.xls file provided by the government has a bad encoding
378
+ 2007 => { :url => 'http://static.brighterplanet.com/science/data/transport/automobiles/fuel_economy_guide/2007_FE_guide_ALL_no_sales_May_01_2007.csv' },
379
379
  2008 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/08data.zip', :filename => '2008_FE_guide_ALL_rel_dates_-no sales-for DOE-5-1-08.csv' },
380
380
  2009 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/09data.zip', :filename => '2009_FE_guide for DOE_ALL-rel dates-no-sales-8-28-08download.csv' },
381
381
  }.sort { |a, b| a.first <=> b.first }.each do |year, options|
@@ -407,7 +407,8 @@ AutomobileMakeModelYearVariant.class_eval do
407
407
 
408
408
  # 2010--?
409
409
  {
410
- 2010 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/10data.zip', :filename => '2010FE Guide for DOE-all rel dates-no-sales 4-9-10public.xls' }
410
+ 2010 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/10data.zip', :filename => '2010FE Guide for DOE-all rel dates-no-sales 4-9-10public.xls' },
411
+ 2011 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/11data.zip', :filename => '2011FEGuide-for DOE rel-dates before 1-23-2011-no-sales-01-10-2011public.xlsx' }
411
412
  }.sort { |a, b| a.first <=> b.first }.each do |year, options|
412
413
  import "#{ year } Fuel Economy Guide",
413
414
  options.merge(:transform => { :class => AutomobileMakeModelYearVariant::ParserE, :year => year },
@@ -466,10 +467,10 @@ AutomobileMakeModelYearVariant.class_eval do
466
467
  end
467
468
  end
468
469
 
469
- verify "Year should be from 1985 to 2010" do
470
+ verify "Year should be from 1985 to 2011" do
470
471
  AutomobileMakeModelYearVariant.all.each do |variant|
471
- unless variant.year > 1984 and variant.year < 2011
472
- raise "Invalid year for AutomobileMakeModelYearVariant #{variant.row_hash}: #{variant.year} (should be from 1985 to 2010)"
472
+ unless variant.year > 1984 and variant.year < 2012
473
+ raise "Invalid year for AutomobileMakeModelYearVariant #{variant.row_hash}: #{variant.year} (should be from 1985 to 2011)"
473
474
  end
474
475
  end
475
476
  end
@@ -22,13 +22,4 @@ class Country < ActiveRecord::Base
22
22
  find_by_iso_3166_code('US')
23
23
  end
24
24
  end
25
-
26
- # if we don't have a country-specific flight route inefficiency factor, use the fallback
27
- def flight_route_inefficiency_factor
28
- if specific_frif = super
29
- specific_frif
30
- else
31
- Country.fallback.flight_route_inefficiency_factor
32
- end
33
- end
34
25
  end
@@ -26,7 +26,7 @@ Country.class_eval do
26
26
  end
27
27
 
28
28
  import "country-specific flight route inefficiency factors derived from Kettunen et al. (2005)",
29
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEJoRVBZaGhnUmlhX240VXE3X0F3WkE&gid=0&output=csv' do
29
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEJoRVBZaGhnUmlhX240VXE3X0F3WkE&output=csv' do
30
30
  key 'iso_3166_code'
31
31
  store 'flight_route_inefficiency_factor'
32
32
  end
@@ -42,7 +42,7 @@ Country.class_eval do
42
42
 
43
43
  # FIXME TODO eventually need to do this for all countries
44
44
  process "Derive US average automobile fuel efficiency from AutomobileTypeFuelYear" do
45
- # AutomobileTypeFuelYear.run_data_miner!
45
+ AutomobileTypeFuelYear.run_data_miner!
46
46
 
47
47
  scope = AutomobileTypeFuelYear.where(:year => AutomobileTypeFuelYear.maximum(:year))
48
48
  fe = scope.sum(:total_travel) / scope.sum(:fuel_consumption)
@@ -10,6 +10,7 @@ BreedGender.class_eval do
10
10
 
11
11
  import "Brighter Planet's list of cat and dog breeds, genders, and weights",
12
12
  :url => 'http://static.brighterplanet.com/science/data/consumables/pets/breed_genders.csv',
13
+ :encoding => 'ISO-8859-1',
13
14
  :select => lambda { |row| row['gender'].present? } do
14
15
  key 'name', :synthesize => lambda { |row| row['name'] + ' ' + row['gender'] }
15
16
  store 'breed_name', :field_name => 'name'
@@ -17,7 +17,7 @@ ClothesMachineUse.class_eval do
17
17
  process "precalculate annual energy use" do
18
18
  find_in_batches do |batch|
19
19
  batch.each do |record|
20
- record.annual_energy_from_electricity_for_clothes_driers = ResidentialEnergyConsumptionSurveyResponse.big_cohort(:clothes_machine_use => record).weighted_average :annual_energy_from_electricity_for_clothes_driers
20
+ record.annual_energy_from_electricity_for_clothes_driers = ResidentialEnergyConsumptionSurveyResponse.big_cohort(:clothes_machine_use_id => record.name).weighted_average :annual_energy_from_electricity_for_clothes_driers
21
21
  record.annual_energy_from_electricity_for_clothes_driers_units = 'joules'
22
22
  record.save!
23
23
  end
@@ -17,7 +17,7 @@ DishwasherUse.class_eval do
17
17
  process "precalculate annual energy" do
18
18
  find_in_batches do |batch|
19
19
  batch.each do |record|
20
- record.annual_energy_from_electricity_for_dishwashers = ResidentialEnergyConsumptionSurveyResponse.big_cohort(:dishwasher_use => record).weighted_average :annual_energy_from_electricity_for_dishwashers
20
+ record.annual_energy_from_electricity_for_dishwashers = ResidentialEnergyConsumptionSurveyResponse.big_cohort(:dishwasher_use_id => record.name).weighted_average :annual_energy_from_electricity_for_dishwashers
21
21
  record.annual_energy_from_electricity_for_dishwashers_units = 'joules'
22
22
  record.save!
23
23
  end
@@ -120,7 +120,7 @@ ResidenceFuelPrice.class_eval do
120
120
  Conversions.register :dollars, :cents, 100
121
121
  Conversions.register :cubic_feet, :cubic_metres, 0.0283168466 # TODO conversions gem has 'cubic_metres'
122
122
  end
123
-
123
+
124
124
  # electricity in dollars per kWh
125
125
  import 'residential electricity prices from the EIA',
126
126
  :url => 'http://www.eia.doe.gov/cneaf/electricity/page/sales_revenue.xls',
@@ -153,39 +153,44 @@ ResidenceFuelPrice.class_eval do
153
153
  store 'month'
154
154
  end
155
155
 
156
+ # FIXME TODO file missing
156
157
  # dollars per litre
157
- import "residential fuel oil prices from the EIA",
158
- :url => 'http://tonto.eia.doe.gov/dnav/pet/xls/PET_PRI_RESID_A_EPPR_PTA_CPGAL_M.xls',
159
- :sheet => 'Data 1',
160
- :skip => 2,
161
- :select => lambda { |row| row['year'].to_i > 1989 },
162
- :transform => { :class => FuelOilParser } do
163
- key 'row_hash'
164
- store 'residence_fuel_type_name', :static => 'fuel oil'
165
- store 'locatable_id'
166
- store 'locatable_type'
167
- store 'price', :from_units => :litres, :to_units => :gallons # denominator
168
- store 'price_description', :static => 'dollars_per_litre'
169
- store 'year'
170
- store 'month'
171
- end
158
+ # sabshere 4/18/2011 this file has gone missing
159
+ # ihough 4/22/2011 comment out for now; we'll deal with this later
160
+ # import "residential fuel oil prices from the EIA",
161
+ # :url => 'http://tonto.eia.doe.gov/dnav/pet/xls/PET_PRI_RESID_A_EPPR_PTA_CPGAL_M.xls',
162
+ # :sheet => 'Data 1',
163
+ # :skip => 2,
164
+ # :select => lambda { |row| row['year'].to_i > 1989 },
165
+ # :transform => { :class => FuelOilParser } do
166
+ # key 'row_hash'
167
+ # store 'residence_fuel_type_name', :static => 'fuel oil'
168
+ # store 'locatable_id'
169
+ # store 'locatable_type'
170
+ # store 'price', :from_units => :litres, :to_units => :gallons # denominator
171
+ # store 'price_description', :static => 'dollars_per_litre'
172
+ # store 'year'
173
+ # store 'month'
174
+ # end
172
175
 
176
+ # FIXME TODO file missing
173
177
  # dollars per litre
174
- import "residential propane prices from the EIA",
175
- :url => 'http://tonto.eia.doe.gov/dnav/pet/xls/PET_PRI_PROP_A_EPLLPA_PRT_CPGAL_M.xls',
176
- :sheet => 'Data 1',
177
- :skip => 2,
178
- :select => lambda { |row| row['year'].to_i > 1989 },
179
- :transform => { :class => PropaneParser } do
180
- key 'row_hash'
181
- store 'residence_fuel_type_name', :static => 'propane'
182
- store 'locatable_id'
183
- store 'locatable_type'
184
- store 'price', :from_units => :litres, :to_units => :gallons # denominator
185
- store 'price_description', :static => 'dollars_per_litre'
186
- store 'year'
187
- store 'month'
188
- end
178
+ # ihough 4/22/2011 comment out for now; we'll deal with this later
179
+ # import "residential propane prices from the EIA",
180
+ # :url => 'http://tonto.eia.doe.gov/dnav/pet/xls/PET_PRI_PROP_A_EPLLPA_PRT_CPGAL_M.xls',
181
+ # :sheet => 'Data 1',
182
+ # :skip => 2,
183
+ # :select => lambda { |row| row['year'].to_i > 1989 },
184
+ # :transform => { :class => PropaneParser } do
185
+ # key 'row_hash'
186
+ # store 'residence_fuel_type_name', :static => 'propane'
187
+ # store 'locatable_id'
188
+ # store 'locatable_type'
189
+ # store 'price', :from_units => :litres, :to_units => :gallons # denominator
190
+ # store 'price_description', :static => 'dollars_per_litre'
191
+ # store 'year'
192
+ # store 'month'
193
+ # end
189
194
 
190
195
  # per Matt in https://brighterplanet.sifterapp.com/projects/30/issues/410/comments
191
196
  # "For coal and kerosene, there isn't good residential price data available, because hardly anybody actually uses them residentially."
@@ -1,3 +1,3 @@
1
1
  module Earth
2
- VERSION = "0.4.9"
2
+ VERSION = "0.4.10"
3
3
  end
@@ -4,7 +4,7 @@ require 'earth/automobile/data_miner'
4
4
 
5
5
  describe AutomobileTypeFuelYearAge do
6
6
  describe 'import' do
7
- it 'imports and processes data successfully' do
7
+ it 'imports and processes data successfully', :slow => true do
8
8
  expect do
9
9
  AutomobileTypeFuelYearAge.run_data_miner!
10
10
  end.should_not raise_error
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: earth
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 4
8
- - 9
9
- version: 0.4.9
4
+ prerelease:
5
+ version: 0.4.10
10
6
  platform: ruby
11
7
  authors:
12
8
  - Seamus Abshere
@@ -16,205 +12,167 @@ autorequire:
16
12
  bindir: bin
17
13
  cert_chain: []
18
14
 
19
- date: 2011-03-10 00:00:00 -05:00
15
+ date: 2011-03-10 00:00:00 -06:00
20
16
  default_executable:
21
17
  dependencies:
22
18
  - !ruby/object:Gem::Dependency
23
19
  name: cohort_scope
20
+ prerelease: false
24
21
  requirement: &id001 !ruby/object:Gem::Requirement
25
22
  none: false
26
23
  requirements:
27
- - - ~>
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
- segments:
30
- - 0
31
- - 1
32
- - 5
33
- version: 0.1.5
26
+ version: 0.2.0
34
27
  type: :runtime
35
- prerelease: false
36
28
  version_requirements: *id001
37
29
  - !ruby/object:Gem::Dependency
38
30
  name: data_miner
31
+ prerelease: false
39
32
  requirement: &id002 !ruby/object:Gem::Requirement
40
33
  none: false
41
34
  requirements:
42
- - - ~>
35
+ - - ">="
43
36
  - !ruby/object:Gem::Version
44
- segments:
45
- - 1
46
- - 1
47
- - 4
48
- version: 1.1.4
37
+ version: "0"
49
38
  type: :runtime
50
- prerelease: false
51
39
  version_requirements: *id002
52
40
  - !ruby/object:Gem::Dependency
53
41
  name: falls_back_on
42
+ prerelease: false
54
43
  requirement: &id003 !ruby/object:Gem::Requirement
55
44
  none: false
56
45
  requirements:
57
- - - ~>
46
+ - - ">="
58
47
  - !ruby/object:Gem::Version
59
- segments:
60
- - 0
61
- - 1
62
- - 3
63
- version: 0.1.3
48
+ version: "0"
64
49
  type: :runtime
65
- prerelease: false
66
50
  version_requirements: *id003
67
51
  - !ruby/object:Gem::Dependency
68
- name: geokit-rails
52
+ name: fixed_width
53
+ prerelease: false
69
54
  requirement: &id004 !ruby/object:Gem::Requirement
70
55
  none: false
71
56
  requirements:
72
57
  - - ">="
73
58
  - !ruby/object:Gem::Version
74
- segments:
75
- - 0
76
59
  version: "0"
77
60
  type: :runtime
78
- prerelease: false
79
61
  version_requirements: *id004
80
62
  - !ruby/object:Gem::Dependency
81
- name: loose_tight_dictionary
63
+ name: geokit-rails
64
+ prerelease: false
82
65
  requirement: &id005 !ruby/object:Gem::Requirement
83
66
  none: false
84
67
  requirements:
85
- - - ~>
68
+ - - ">="
86
69
  - !ruby/object:Gem::Version
87
- segments:
88
- - 0
89
- - 0
90
- - 10
91
- version: 0.0.10
70
+ version: "0"
92
71
  type: :runtime
93
- prerelease: false
94
72
  version_requirements: *id005
95
73
  - !ruby/object:Gem::Dependency
96
74
  name: weighted_average
75
+ prerelease: false
97
76
  requirement: &id006 !ruby/object:Gem::Requirement
98
77
  none: false
99
78
  requirements:
100
- - - ~>
79
+ - - ">="
101
80
  - !ruby/object:Gem::Version
102
- segments:
103
- - 0
104
- - 0
105
- - 6
106
- version: 0.0.6
81
+ version: "0"
107
82
  type: :runtime
108
- prerelease: false
109
83
  version_requirements: *id006
110
84
  - !ruby/object:Gem::Dependency
111
85
  name: bundler
86
+ prerelease: false
112
87
  requirement: &id007 !ruby/object:Gem::Requirement
113
88
  none: false
114
89
  requirements:
115
90
  - - ">="
116
91
  - !ruby/object:Gem::Version
117
- segments:
118
- - 0
119
92
  version: "0"
120
93
  type: :development
121
- prerelease: false
122
94
  version_requirements: *id007
123
95
  - !ruby/object:Gem::Dependency
124
96
  name: bueller
97
+ prerelease: false
125
98
  requirement: &id008 !ruby/object:Gem::Requirement
126
99
  none: false
127
100
  requirements:
128
101
  - - ">="
129
102
  - !ruby/object:Gem::Version
130
- segments:
131
- - 0
132
103
  version: "0"
133
104
  type: :development
134
- prerelease: false
135
105
  version_requirements: *id008
136
106
  - !ruby/object:Gem::Dependency
137
107
  name: cucumber
108
+ prerelease: false
138
109
  requirement: &id009 !ruby/object:Gem::Requirement
139
110
  none: false
140
111
  requirements:
141
112
  - - ">="
142
113
  - !ruby/object:Gem::Version
143
- segments:
144
- - 0
145
114
  version: "0"
146
115
  type: :development
147
- prerelease: false
148
116
  version_requirements: *id009
149
117
  - !ruby/object:Gem::Dependency
150
118
  name: rake
119
+ prerelease: false
151
120
  requirement: &id010 !ruby/object:Gem::Requirement
152
121
  none: false
153
122
  requirements:
154
123
  - - ">="
155
124
  - !ruby/object:Gem::Version
156
- segments:
157
- - 0
158
125
  version: "0"
159
126
  type: :development
160
- prerelease: false
161
127
  version_requirements: *id010
162
128
  - !ruby/object:Gem::Dependency
163
129
  name: rdoc
130
+ prerelease: false
164
131
  requirement: &id011 !ruby/object:Gem::Requirement
165
132
  none: false
166
133
  requirements:
167
134
  - - ">="
168
135
  - !ruby/object:Gem::Version
169
- segments:
170
- - 0
171
136
  version: "0"
172
137
  type: :development
173
- prerelease: false
174
138
  version_requirements: *id011
175
139
  - !ruby/object:Gem::Dependency
176
140
  name: rdoc
141
+ prerelease: false
177
142
  requirement: &id012 !ruby/object:Gem::Requirement
178
143
  none: false
179
144
  requirements:
180
145
  - - ">="
181
146
  - !ruby/object:Gem::Version
182
- segments:
183
- - 0
184
147
  version: "0"
185
148
  type: :development
186
- prerelease: false
187
149
  version_requirements: *id012
188
150
  - !ruby/object:Gem::Dependency
189
151
  name: rspec
152
+ prerelease: false
190
153
  requirement: &id013 !ruby/object:Gem::Requirement
191
154
  none: false
192
155
  requirements:
193
156
  - - ">="
194
157
  - !ruby/object:Gem::Version
195
- segments:
196
- - 0
197
158
  version: "0"
198
159
  type: :development
199
- prerelease: false
200
160
  version_requirements: *id013
201
161
  - !ruby/object:Gem::Dependency
202
162
  name: sqlite3-ruby
163
+ prerelease: false
203
164
  requirement: &id014 !ruby/object:Gem::Requirement
204
165
  none: false
205
166
  requirements:
206
167
  - - ">="
207
168
  - !ruby/object:Gem::Version
208
- segments:
209
- - 0
210
169
  version: "0"
211
170
  type: :development
212
- prerelease: false
213
171
  version_requirements: *id014
214
172
  description: An earth-simulation environment with ActiveRecord models and data
215
173
  email: andy@rossmeissl.net
216
- executables: []
217
-
174
+ executables:
175
+ - earth_tester.rb
218
176
  extensions: []
219
177
 
220
178
  extra_rdoc_files:
@@ -229,6 +187,7 @@ files:
229
187
  - LICENSE-PREAMBLE
230
188
  - README.markdown
231
189
  - Rakefile
190
+ - bin/earth_tester.rb
232
191
  - earth.gemspec
233
192
  - features/automobile_fuel.feature
234
193
  - features/automobile_make.feature
@@ -554,23 +513,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
554
513
  requirements:
555
514
  - - ">="
556
515
  - !ruby/object:Gem::Version
557
- hash: -1989203883064114868
558
- segments:
559
- - 0
560
516
  version: "0"
561
517
  required_rubygems_version: !ruby/object:Gem::Requirement
562
518
  none: false
563
519
  requirements:
564
520
  - - ">="
565
521
  - !ruby/object:Gem::Version
566
- hash: -1989203883064114868
567
- segments:
568
- - 0
569
522
  version: "0"
570
523
  requirements: []
571
524
 
572
525
  rubyforge_project:
573
- rubygems_version: 1.3.7
526
+ rubygems_version: 1.6.2
574
527
  signing_key:
575
528
  specification_version: 3
576
529
  summary: Land, sky, and sea