earth 0.4.9 → 0.4.10

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.
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