automobile_trip 0.0.9 → 0.1.0
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/.document +5 -0
- data/.gitignore +21 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +200 -0
- data/LICENSE-PREAMBLE +52 -0
- data/Rakefile +71 -0
- data/VERSION +1 -0
- data/automobile_trip.gemspec +27 -0
- data/dot.rvmrc +9 -0
- data/features/automobile_trip_committees.feature +415 -16
- data/features/automobile_trip_emissions.feature +142 -12
- data/features/step_definitions/automobile_trip_steps.rb +15 -0
- data/features/step_definitions/mapquest_steps.rb +5 -0
- data/features/support/env.rb +7 -1
- data/lib/automobile_trip.rb +1 -0
- data/lib/automobile_trip/carbon_model.rb +570 -13
- data/lib/automobile_trip/characterization.rb +20 -1
- data/lib/automobile_trip/data.rb +21 -4
- data/lib/automobile_trip/fallback.rb +6 -2
- data/lib/automobile_trip/relationships.rb +7 -1
- data/lib/automobile_trip/version.rb +5 -0
- data/lib/test_support/db/fixtures/automobile_fuels.csv +4 -0
- data/lib/test_support/db/fixtures/automobile_make_model_year_variants.csv +2 -0
- data/lib/test_support/db/fixtures/automobile_make_model_years.csv +2 -0
- data/lib/test_support/db/fixtures/automobile_make_models.csv +2 -0
- data/lib/test_support/db/fixtures/automobile_make_years.csv +2 -0
- data/lib/test_support/db/fixtures/automobile_makes.csv +2 -0
- data/lib/test_support/db/fixtures/automobile_size_classes.csv +3 -0
- data/lib/test_support/db/fixtures/automobile_type_fuel_years.csv +5 -0
- data/lib/test_support/db/fixtures/automobile_type_years.csv +3 -0
- data/lib/test_support/db/fixtures/fuel_years.csv +2 -0
- data/lib/test_support/db/fixtures/fuels.csv +4 -0
- data/lib/test_support/db/fixtures/greenhouse_gases.csv +3 -0
- data/vendor/plugin/mapquest/README.textile +70 -0
- data/vendor/plugin/mapquest/Rakefile +15 -0
- data/vendor/plugin/mapquest/init.rb +1 -0
- data/vendor/plugin/mapquest/lib/mapquest_directions.rb +56 -0
- data/vendor/plugin/mapquest/spec/lib/mapquest_directions.xml +2 -0
- data/vendor/plugin/mapquest/spec/lib/mapquest_directions_fail.xml +2 -0
- data/vendor/plugin/mapquest/spec/lib/mapquest_directions_spec.rb +58 -0
- data/vendor/plugin/mapquest/spec/spec_helper.rb +13 -0
- metadata +55 -121
- data/lib/automobile_trip/committee_structure.rb +0 -65
@@ -3,8 +3,27 @@ module BrighterPlanet
|
|
3
3
|
module Characterization
|
4
4
|
def self.included(base)
|
5
5
|
base.characterize do
|
6
|
+
has :date
|
7
|
+
has :make
|
8
|
+
has :make_year
|
9
|
+
has :make_model
|
10
|
+
has :make_model_year
|
11
|
+
has :make_model_year_variant
|
12
|
+
has :size_class
|
13
|
+
has :hybridity
|
14
|
+
has :urbanity_estimate
|
15
|
+
has :hybridity_multiplier
|
16
|
+
has :fuel_efficiency
|
17
|
+
has :speed
|
18
|
+
has :city_speed
|
19
|
+
has :highway_speed
|
20
|
+
has :duration
|
21
|
+
has :origin
|
22
|
+
has :destination
|
23
|
+
has :distance
|
6
24
|
has :fuel_use
|
7
|
-
has :
|
25
|
+
has :automobile_fuel # don't call this fuel b/c then if you specify fuel.name in tests sniff will try to look it up in the fuels fixture, not automobile_fuels
|
26
|
+
has :mapquest_api_key, :display => lambda { |key| "secret key" }
|
8
27
|
end
|
9
28
|
end
|
10
29
|
end
|
data/lib/automobile_trip/data.rb
CHANGED
@@ -4,11 +4,28 @@ module BrighterPlanet
|
|
4
4
|
def self.included(base)
|
5
5
|
base.data_miner do
|
6
6
|
schema do
|
7
|
-
|
8
|
-
|
9
|
-
string
|
7
|
+
date 'date'
|
8
|
+
string 'make_name'
|
9
|
+
string 'make_year_name'
|
10
|
+
string 'make_model_name'
|
11
|
+
string 'make_model_year_name'
|
12
|
+
string 'make_model_year_variant_row_hash'
|
13
|
+
string 'size_class_name'
|
14
|
+
boolean 'hybridity'
|
15
|
+
float 'urbanity_estimate'
|
16
|
+
float 'hybridity_multiplier'
|
17
|
+
float 'fuel_efficiency'
|
18
|
+
float 'speed'
|
19
|
+
float 'city_speed'
|
20
|
+
float 'highway_speed'
|
21
|
+
float 'duration'
|
22
|
+
string 'origin'
|
23
|
+
string 'destination'
|
24
|
+
float 'distance'
|
25
|
+
float 'fuel_use'
|
26
|
+
string 'automobile_fuel_name'
|
27
|
+
string 'mapquest_api_key'
|
10
28
|
end
|
11
|
-
|
12
29
|
process :run_data_miner_on_belongs_to_associations
|
13
30
|
end
|
14
31
|
end
|
@@ -2,8 +2,12 @@ module BrighterPlanet
|
|
2
2
|
module AutomobileTrip
|
3
3
|
module Fallback
|
4
4
|
def self.included(base)
|
5
|
-
base.falls_back_on :
|
6
|
-
:
|
5
|
+
base.falls_back_on :urbanity_estimate => 0.43,
|
6
|
+
:city_speed => 19.9.miles.to(:kilometres),
|
7
|
+
:highway_speed => 57.1.miles.to(:kilometres),
|
8
|
+
:hybridity_multiplier => 1.0,
|
9
|
+
:fuel_efficiency => 20.182.miles_per_gallon.to(:kilometres_per_litre),
|
10
|
+
:distance => 10.15.miles.to(:kilometres)
|
7
11
|
end
|
8
12
|
end
|
9
13
|
end
|
@@ -2,7 +2,13 @@ module BrighterPlanet
|
|
2
2
|
module AutomobileTrip
|
3
3
|
module Relationships
|
4
4
|
def self.included(target)
|
5
|
-
target.belongs_to :
|
5
|
+
target.belongs_to :make, :class_name => 'AutomobileMake', :foreign_key => 'make_name'
|
6
|
+
target.belongs_to :make_year, :class_name => 'AutomobileMakeYear', :foreign_key => 'make_year_name'
|
7
|
+
target.belongs_to :make_model, :class_name => 'AutomobileMakeModel', :foreign_key => 'make_model_name'
|
8
|
+
target.belongs_to :make_model_year, :class_name => 'AutomobileMakeModelYear', :foreign_key => 'make_model_year_name'
|
9
|
+
target.belongs_to :make_model_year_variant, :class_name => 'AutomobileMakeModelYearVariant', :foreign_key => 'make_model_year_variant_row_hash'
|
10
|
+
target.belongs_to :size_class, :class_name => 'AutomobileSizeClass', :foreign_key => 'size_class_name'
|
11
|
+
target.belongs_to :automobile_fuel, :class_name => 'AutomobileFuel', :foreign_key => 'automobile_fuel_name'
|
6
12
|
end
|
7
13
|
end
|
8
14
|
end
|
@@ -0,0 +1,2 @@
|
|
1
|
+
row_hash,name,make_name,make_year_name,make_model_name,make_model_year_name,year,fuel_efficiency_city,fuel_efficiency_city_units,fuel_efficiency_highway,fuel_efficiency_highway_units,fuel_code
|
2
|
+
xxx1,Prius,Toyota,Toyota 2003,Toyota Prius,Toyota Prius 2003,2003,50,kilometres_per_litre,40,kilometres_per_litre,R
|
@@ -0,0 +1,3 @@
|
|
1
|
+
name,fuel_efficiency_city,fuel_efficiency_city_units,fuel_efficiency_highway,fuel_efficiency_highway_units,hybrid_fuel_efficiency_city_multiplier,hybrid_fuel_efficiency_highway_multiplier,conventional_fuel_efficiency_city_multiplier,conventional_fuel_efficiency_highway_multiplier
|
2
|
+
Midsize Car,10,kilometres_per_litre,20,kilometres_per_litre,2,1.5,0.75,1
|
3
|
+
Midsize Wagon,5,kilometres_per_litre,10,kilometres_per_litre
|
@@ -0,0 +1,5 @@
|
|
1
|
+
name,fuel_common_name,type_year_name,fuel_consumption,fuel_consumption_units,total_travel,total_travel_units,ch4_emission_factor,ch4_emission_factor_units,n2o_emission_factor,n2o_emission_factor_units
|
2
|
+
Light-duty trucks diesel 2008,diesel,Light-duty trucks 2008,987,litres,715,kilometres,0.000004,kilograms_per_litre,0.000007,kilograms_per_litre
|
3
|
+
Passenger cars diesel 2008,diesel,Passenger cars 2008,144,litres,126,kilometres,0.000003,kilograms_per_litre,0.000005,kilograms_per_litre
|
4
|
+
Light-duty trucks gasoline 2008,gasoline,Light-duty trucks 2008,20763,litres,17091,kilometres,0.00008,kilograms_per_litre,0.00003,kilograms_per_litre
|
5
|
+
Passenger cars gasoline 2008,gasoline,Passenger cars 2008,25352,litres,25851,kilometres,0.0001,kilograms_per_litre,0.00002,kilograms_per_litre
|
@@ -0,0 +1,70 @@
|
|
1
|
+
h2. Usage
|
2
|
+
|
3
|
+
Get a MapQuest API key, and store in your app under MAPQUEST_KEY
|
4
|
+
<pre>MAPQUEST_KEY = 'your_api_key'</pre>
|
5
|
+
|
6
|
+
<pre>directions = MapQuestDirections.new(origin, destination)</pre>
|
7
|
+
where _origin_ and _destination_ are strings of addresses or places that MapQuest can find an address for. Example: "816 Meridian St., 37207"
|
8
|
+
|
9
|
+
Get drive time or distance of whole trip
|
10
|
+
<pre>
|
11
|
+
drive_time_in_minutes = directions.drive_time_in_minutes
|
12
|
+
distance_in_miles = directions.distance_in_miles
|
13
|
+
</pre>
|
14
|
+
|
15
|
+
Get the XML MapQuest returns with every turn, or the API call URL
|
16
|
+
<pre>
|
17
|
+
xml = directions.xml
|
18
|
+
xml_call = directions.xml_call
|
19
|
+
</pre>
|
20
|
+
|
21
|
+
h3. Error situations
|
22
|
+
|
23
|
+
<pre>directions.status</pre> shows you the status code returned by MapQuest. 0 means worked. Other codes (500, 403) mean problem.
|
24
|
+
|
25
|
+
If MapQuest can't recognize your places or gives an error, the distance_in_miles and drive_time_in_minutes will each return 0. You can call <pre>directions.status</pre> and it should tell you a number code for the problem. You can call <pre>directions.xml</pre> to read the full text.
|
26
|
+
|
27
|
+
h2. Installation
|
28
|
+
|
29
|
+
h3. gem
|
30
|
+
|
31
|
+
rails 2.3
|
32
|
+
# gem install mapquest_directions
|
33
|
+
# add config.gem "mapquest_directions" to your environment.rb file
|
34
|
+
|
35
|
+
rails 3.0
|
36
|
+
# gem 'mapquest_directions' in your Gemfile
|
37
|
+
# <pre>bundle install</pre> from command line
|
38
|
+
|
39
|
+
h3. Rails plugin
|
40
|
+
|
41
|
+
Rails 2.3
|
42
|
+
<pre>script/plugin install git://github.com/joshcrews/mapquest-directions-ruby.git</pre>
|
43
|
+
|
44
|
+
Rails 3.0
|
45
|
+
<pre>rails plugin install git://github.com/joshcrews/mapquest-directions-ruby.git</pre>
|
46
|
+
|
47
|
+
h3. Compatibility
|
48
|
+
|
49
|
+
Tested on Rails 2.3.8
|
50
|
+
|
51
|
+
Not yet tested on Rails 3. It probably is Rails 3 compatible, because it's just a single class with a few methods. It's probably compatible with every ruby project ever.
|
52
|
+
|
53
|
+
h3. MapQuest maps API key
|
54
|
+
|
55
|
+
You'll need a MapQuest Map API key
|
56
|
+
|
57
|
+
http://developer.mapquest.com/
|
58
|
+
|
59
|
+
Include it as the constant MAPQUEST_KEY in an app configuration file (environment.rb, config/initializers/api_keys.rb)
|
60
|
+
|
61
|
+
h3. Need turn-by-turn directions?
|
62
|
+
|
63
|
+
Not yet included in this gem, but you can do it with nokogiri to parse the XML that comes back when you do
|
64
|
+
<pre>MapQuestDirections.new(origin, destination).xml</pre>
|
65
|
+
And then nokogiri can cycle through each <maneuver> and you can pick out what you need.
|
66
|
+
|
67
|
+
h2. License
|
68
|
+
|
69
|
+
Anyone can use this code in any way.
|
70
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Rakefile
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
require 'echoe'
|
5
|
+
|
6
|
+
Echoe.new('mapquest_directions', '0.1.0') do |p|
|
7
|
+
p.description = "Ruby-wrapper for MapQuest Directions API. Can return the drive time and driving distance between two places"
|
8
|
+
p.url = "http://github.com/joshcrews/MapQuest-Directions-Ruby"
|
9
|
+
p.author = "Josh Crews"
|
10
|
+
p.email = "josh@joshcrews.com"
|
11
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
12
|
+
p.development_dependencies = ['nokogiri >=1.4.1']
|
13
|
+
end
|
14
|
+
|
15
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'mapquest_directions'
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
class MapQuestDirections
|
6
|
+
class Failure < StandardError; end
|
7
|
+
|
8
|
+
attr_accessor :location_1, :location_2, :xml_call, :doc
|
9
|
+
|
10
|
+
def initialize(location_1, location_2, api_key)
|
11
|
+
@base_url = "http://www.mapquestapi.com/directions/v1/route?key=#{URI.escape(api_key)}&outFormat=xml&"
|
12
|
+
@location_1 = location_1
|
13
|
+
@location_2 = location_2
|
14
|
+
options = "from=#{transcribe(@location_1)}&to=#{transcribe(@location_2)}"
|
15
|
+
@xml_call = @base_url + options
|
16
|
+
end
|
17
|
+
|
18
|
+
def doc
|
19
|
+
@doc ||= begin
|
20
|
+
xml = get_url(xml_call)
|
21
|
+
noko = Nokogiri::XML(xml)
|
22
|
+
status = noko.css("statusCode").text
|
23
|
+
unless status == '0'
|
24
|
+
errors = noko.css("message").map(&:text).join(', ')
|
25
|
+
raise Failure, "Could not calculate directions between #{location_1} and #{location_2}: #{errors}"
|
26
|
+
end
|
27
|
+
noko
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def drive_time_in_minutes
|
32
|
+
drive_time = doc.css("time").first.text
|
33
|
+
convert_to_minutes(drive_time)
|
34
|
+
end
|
35
|
+
|
36
|
+
def distance_in_kilometres
|
37
|
+
distance_in_miles = doc.css("distance").first.text.to_i
|
38
|
+
end
|
39
|
+
|
40
|
+
def distance_in_kilometres
|
41
|
+
distance_in_kilometres = doc.css("distance").first.text.to_f.miles.to(:kilometres)
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
def convert_to_minutes(text)
|
46
|
+
(text.to_i / 60).ceil
|
47
|
+
end
|
48
|
+
|
49
|
+
def transcribe(location)
|
50
|
+
location.gsub(" ", "+")
|
51
|
+
end
|
52
|
+
|
53
|
+
def get_url(url)
|
54
|
+
Net::HTTP.get(::URI.parse(url))
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response><info><statusCode>0</statusCode><messages/><copyright><imageUrl>http://tile21.mqcdn.com/res/mqlogo.gif</imageUrl><imageAltText>© 2010 MapQuest, Inc.</imageAltText><text>© 2010 MapQuest, Inc.</text></copyright></info><route><sessionId>4c6c8e89-019b-0001-02b7-4979-0024e83e3993</sessionId><options><shapeFormat>raw</shapeFormat><generalize>-1.0</generalize><maxLinkId>0</maxLinkId><narrativeType>text</narrativeType><stateBoundaryDisplay>true</stateBoundaryDisplay><countryBoundaryDisplay>true</countryBoundaryDisplay><sideOfStreetDisplay>true</sideOfStreetDisplay><destinationManeuverDisplay>true</destinationManeuverDisplay><avoidTimedConditions>false</avoidTimedConditions><enhancedNarrative>false</enhancedNarrative><timeType>0</timeType><routeType>FASTEST</routeType><locale>en_US</locale><unit>M</unit><tryAvoidLinkIds></tryAvoidLinkIds><mustAvoidLinkIds></mustAvoidLinkIds><manmaps>true</manmaps></options><boundingBox><ul><lat>36.185138</lat><lng>-86.940116</lng></ul><lr><lat>32.554519</lat><lng>-85.481231</lng></lr></boundingBox><distance>310.2900085449219</distance><time>18209</time><formattedTime>05:03:29</formattedTime><legs><leg><distance>310.29</distance><time>18209</time><formattedTime>05:03:29</formattedTime><index>0</index><maneuvers><maneuver><startPoint><lat>36.185138</lat><lng>-86.768287</lng></startPoint><maneuverNotes/><distance>0.093</distance><time>22</time><formattedTime>00:00:22</formattedTime><attributes>0</attributes><turnType>2</turnType><direction>4</direction><narrative>Start out going SOUTH on MERIDIAN ST toward ARRINGTON ST.</narrative><directionName>South</directionName><index>0</index><streets><street>MERIDIAN ST</street></streets><signs/><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-2,36.185138,-86.768287,0,0|purple-3,36.183811,-86.768478,0,0|¢er=36.1844745,-86.7683825&zoom=13&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>36.183811</lat><lng>-86.768478</lng></startPoint><maneuverNotes/><distance>0.296</distance><time>73</time><formattedTime>00:01:13</formattedTime><attributes>0</attributes><turnType>2</turnType><direction>7</direction><narrative>Turn RIGHT onto HANCOCK ST.</narrative><directionName>West</directionName><index>1</index><streets><street>HANCOCK ST</street></streets><signs/><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-3,36.183811,-86.768478,0,0|purple-4,36.184398,-86.773712,0,0|¢er=36.184104500000004,-86.771095&zoom=12&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>36.184398</lat><lng>-86.773712</lng></startPoint><maneuverNotes/><distance>0.522</distance><time>75</time><formattedTime>00:01:15</formattedTime><attributes>0</attributes><turnType>6</turnType><direction>4</direction><narrative>Turn LEFT onto N 1ST ST/US-31W/US-41/US-431/TN-11. Continue to follow N 1ST ST.</narrative><directionName>South</directionName><index>2</index><streets><street>N 1ST ST</street></streets><signs/><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_left_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-4,36.184398,-86.773712,0,0|purple-5,36.17691,-86.774551,0,0|¢er=36.180654000000004,-86.77413150000001&zoom=10&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>36.17691</lat><lng>-86.774551</lng></startPoint><maneuverNotes/><distance>0.03</distance><time>6</time><formattedTime>00:00:06</formattedTime><attributes>0</attributes><turnType>6</turnType><direction>8</direction><narrative>Turn LEFT onto SPRING ST.</narrative><directionName>East</directionName><index>3</index><streets><street>SPRING ST</street></streets><signs/><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_left_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-5,36.17691,-86.774551,0,0|purple-6,36.176799,-86.774032,0,0|¢er=36.176854500000005,-86.7742915&zoom=15&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>36.176799</lat><lng>-86.774032</lng></startPoint><maneuverNotes/><distance>1.584</distance><time>134</time><formattedTime>00:02:14</formattedTime><attributes>128</attributes><turnType>10</turnType><direction>8</direction><narrative>Merge onto I-24 E.</narrative><directionName>East</directionName><index>4</index><streets><street>INTERSTATE 24 E</street></streets><signs><sign><type>1</type><direction>8</direction><text>24</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00001CO_SM&n=24&d=EAST]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_merge_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-6,36.176799,-86.774032,0,0|purple-7,36.157688,-86.760406,0,0|¢er=36.1672435,-86.76721900000001&zoom=9&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>36.157688</lat><lng>-86.760406</lng></startPoint><maneuverNotes/><distance>1.047</distance><time>92</time><formattedTime>00:01:32</formattedTime><attributes>128</attributes><turnType>10</turnType><direction>7</direction><narrative>Merge onto I-40 W via EXIT 50B toward I-65 S/MEMPHIS/HUNTSVILLE.</narrative><directionName>West</directionName><index>5</index><streets><street>INTERSTATE 40 W</street></streets><signs><sign><type>1</type><direction>7</direction><text>40</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00001CO_SM&n=40&d=WEST]]></url></sign><sign><type>1001</type><direction>0</direction><text>50B</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RSEXITRIGHTNUM_SM&n=50B&d=]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_merge_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-7,36.157688,-86.760406,0,0|purple-8,36.149211,-86.774963,0,0|¢er=36.1534495,-86.7676845&zoom=10&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>36.149211</lat><lng>-86.774963</lng></startPoint><maneuverNotes/><distance>188.83301</distance><time>10207</time><formattedTime>02:50:07</formattedTime><attributes>128</attributes><turnType>11</turnType><direction>4</direction><narrative>Merge onto I-65 S via EXIT 210B on the LEFT toward HUNTSVILLE (Crossing into ALABAMA).</narrative><directionName>South</directionName><index>6</index><streets><street>INTERSTATE 65 S</street></streets><signs><sign><type>1</type><direction>4</direction><text>65</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00001CO_SM&n=65&d=SOUTH]]></url></sign><sign><type>1001</type><direction>0</direction><text>210B</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RSEXITLEFTNUM_SM&n=210B&d=]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_merge_left_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-8,36.149211,-86.774963,0,0|purple-9,33.523189,-86.826721,0,0|¢er=34.836200000000005,-86.852096&zoom=2&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>33.523189</lat><lng>-86.826721</lng></startPoint><maneuverNotes/><distance>1.234</distance><time>94</time><formattedTime>00:01:34</formattedTime><attributes>128</attributes><turnType>11</turnType><direction>8</direction><narrative>Merge onto I-20 E/I-59 N via EXIT 261A on the LEFT toward ATLANTA/GADSDEN.</narrative><directionName>East</directionName><index>7</index><streets><street>INTERSTATE 20 E</street><street>INTERSTATE 59 N</street></streets><signs><sign><type>1</type><direction>8</direction><text>20</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00001CO_SM&n=20&d=EAST]]></url></sign><sign><type>1</type><direction>1</direction><text>59</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00001CO_SM&n=59&d=NORTH]]></url></sign><sign><type>1001</type><direction>0</direction><text>261A</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RSEXITLEFTNUM_SM&n=261A&d=]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_merge_left_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-9,33.523189,-86.826721,0,0|purple-10,33.52423,-86.807746,0,0|¢er=33.522014,-86.8172335&zoom=10&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1965438145&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>33.52423</lat><lng>-86.807746</lng></startPoint><maneuverNotes/><distance>3.204</distance><time>247</time><formattedTime>00:04:07</formattedTime><attributes>128</attributes><turnType>10</turnType><direction>8</direction><narrative>Merge onto US-280 E/US-31 S/ELTON B STEPHENS EXPY/AL-3 S via EXIT 126A.</narrative><directionName>East</directionName><index>8</index><streets><street>US HIGHWAY 280 E</street><street>US HIGHWAY 31 S</street><street>ELTON B STEPHENS EXPY</street><street>STATE ROUTE 3 S</street></streets><signs><sign><type>2</type><direction>8</direction><text>280</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00002BW_SM&n=280&d=EAST]]></url></sign><sign><type>2</type><direction>4</direction><text>31</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00002BW_SM&n=31&d=SOUTH]]></url></sign><sign><type>3</type><direction>4</direction><text>3</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00003BW_SM&n=3&d=SOUTH]]></url></sign><sign><type>1001</type><direction>0</direction><text>126A</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RSEXITRIGHTNUM_SM&n=126A&d=]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_merge_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-10,33.52423,-86.807746,0,0|purple-11,33.48822,-86.786872,0,0|¢er=33.506994,-86.797309&zoom=8&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>33.48822</lat><lng>-86.786872</lng></startPoint><maneuverNotes/><distance>101.94401</distance><time>6238</time><formattedTime>01:43:58</formattedTime><attributes>0</attributes><turnType>10</turnType><direction>8</direction><narrative>Merge onto US-280 E/AL-38 E toward SYLACAUGA/ZOO-GARDENS.</narrative><directionName>East</directionName><index>9</index><streets><street>US HIGHWAY 280 E</street><street>STATE ROUTE 38 E</street></streets><signs><sign><type>2</type><direction>8</direction><text>280</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00002BW_SM&n=280&d=EAST]]></url></sign><sign><type>3</type><direction>8</direction><text>38</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00003BW_SM&n=38&d=EAST]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_merge_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-11,33.48822,-86.786872,0,0|purple-12,32.6763,-85.486328,0,0|¢er=33.08226,-86.1366&zoom=4&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>32.6763</lat><lng>-85.486328</lng></startPoint><maneuverNotes/><distance>2.857</distance><time>214</time><formattedTime>00:03:34</formattedTime><attributes>0</attributes><turnType>2</turnType><direction>4</direction><narrative>Turn RIGHT onto AL-147.</narrative><directionName>South</directionName><index>10</index><streets><street>STATE ROUTE 147</street></streets><signs><sign><type>3</type><direction>0</direction><text>147</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00003BW_SM&n=147]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-12,32.6763,-85.486328,0,0|purple-13,32.637149,-85.481666,0,0|¢er=32.656724499999996,-85.48603750000001&zoom=8&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>32.637149</lat><lng>-85.481666</lng></startPoint><maneuverNotes/><distance>5.052</distance><time>386</time><formattedTime>00:06:26</formattedTime><attributes>0</attributes><turnType>1</turnType><direction>6</direction><narrative>Turn SLIGHT RIGHT onto AL-267/SHUG JORDAN PKWY.</narrative><directionName>Southwest</directionName><index>11</index><streets><street>STATE ROUTE 267</street><street>SHUG JORDAN PKWY</street></streets><signs><sign><type>3</type><direction>0</direction><text>267</text><extraText></extraText><url><![CDATA[http://api-signs.mqcdn.com/?s=rs&t=RS00003BW_SM&n=267]]></url></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_slight_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-13,32.637149,-85.481666,0,0|purple-14,32.57796,-85.498443,0,0|¢er=32.6075545,-85.49468949999999&zoom=7&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>32.57796</lat><lng>-85.498443</lng></startPoint><maneuverNotes/><distance>1.706</distance><time>155</time><formattedTime>00:02:35</formattedTime><attributes>0</attributes><turnType>1</turnType><direction>6</direction><narrative>Turn SLIGHT RIGHT onto S COLLEGE ST/AL-147. Continue to follow S COLLEGE ST.</narrative><directionName>Southwest</directionName><index>12</index><streets><street>S COLLEGE ST</street></streets><signs/><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_slight_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-14,32.57796,-85.498443,0,0|purple-15,32.55513,-85.508186,0,0|¢er=32.566545,-85.503116&zoom=8&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>32.55513</lat><lng>-85.508186</lng></startPoint><maneuverNotes/><distance>1.021</distance><time>129</time><formattedTime>00:02:09</formattedTime><attributes>0</attributes><turnType>6</turnType><direction>8</direction><narrative>Turn LEFT onto CR-863/SHELL TOOMER PKWY.</narrative><directionName>East</directionName><index>13</index><streets><street>COUNTY ROUTE 863</street><street>SHELL TOOMER PKWY</street></streets><signs><sign><type>4</type><direction>0</direction><text>863</text><extraText></extraText></sign></signs><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_left_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-15,32.55513,-85.508186,0,0|purple-16,32.55466,-85.490821,0,0|¢er=32.554824499999995,-85.4995035&zoom=10&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>32.55466</lat><lng>-85.490821</lng></startPoint><maneuverNotes/><distance>0.818</distance><time>130</time><formattedTime>00:02:10</formattedTime><attributes>0</attributes><turnType>6</turnType><direction>1</direction><narrative>Turn LEFT onto CANARY DR.</narrative><directionName>North</directionName><index>14</index><streets><street>CANARY DR</street></streets><signs/><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_left_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-16,32.55466,-85.490821,0,0|purple-17,32.566139,-85.489463,0,0|¢er=32.5603995,-85.49039400000001&zoom=9&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint><lat>32.566139</lat><lng>-85.489463</lng></startPoint><maneuverNotes/><distance>0.049</distance><time>7</time><formattedTime>00:00:07</formattedTime><attributes>0</attributes><turnType>2</turnType><direction>3</direction><narrative>Turn RIGHT to stay on CANARY DR.</narrative><directionName>Northeast</directionName><index>15</index><streets><street>CANARY DR</street></streets><signs/><iconUrl><![CDATA[http://content.mapquest.com/mqsite/turnsigns/rs_right_sm.gif]]></iconUrl><linkIds/><mapUrl><![CDATA[http://www.mapquestapi.com/staticmap/v3/getmap?type=map&size=225,160&pois=purple-17,32.566139,-85.489463,0,0|purple-18,32.566478,-85.488723,0,0|¢er=32.5663085,-85.489093&zoom=15&key=Dmjtd|luu725uyn5,2x=o5-5zb0d&rand=1975826365&session=4c6c8e89-019b-0001-02b7-4979-0024e83e3993]]></mapUrl></maneuver><maneuver><startPoint/><maneuverNotes/><distance>0.0</distance><time>0</time><formattedTime>00:00:00</formattedTime><attributes>0</attributes><turnType>-1</turnType><direction>0</direction><narrative>1963 CANARY DR is on the RIGHT.</narrative><directionName></directionName><index>16</index><streets/><signs/><linkIds/><mapUrl><![CDATA[]]></mapUrl></maneuver></maneuvers><hasTollRoad>false</hasTollRoad><hasFerry>false</hasFerry><hasHighway>true</hasHighway><hasSeasonalClosure>false</hasSeasonalClosure><hasUnpaved>false</hasUnpaved><hasCountryCross>false</hasCountryCross></leg></legs><hasTollRoad>false</hasTollRoad><hasFerry>false</hasFerry><hasHighway>true</hasHighway><hasSeasonalClosure>false</hasSeasonalClosure><hasUnpaved>false</hasUnpaved><hasCountryCross>false</hasCountryCross><locations><location><street>816 Meridian St</street><adminArea5 type="City">Nashville</adminArea5><adminArea3 type="State">TN</adminArea3><adminArea4 type="County">Davidson County</adminArea4><postalCode>37207-5850</postalCode><adminArea1 type="Country">US</adminArea1><geocodeQuality>POINT</geocodeQuality><geocodeQualityCode>P1AAA</geocodeQualityCode><dragPoint>false</dragPoint><sideOfStreet>L</sideOfStreet><displayLatLng><latLng><lat>36.185138</lat><lng>-86.76828</lng></latLng></displayLatLng><linkId>31393483</linkId><type>s</type><latLng><lat>36.18514</lat><lng>-86.76828</lng></latLng></location><location><street>1963 Canary Dr</street><adminArea5 type="City">Auburn</adminArea5><adminArea3 type="State">AL</adminArea3><adminArea4 type="County">Lee County</adminArea4><postalCode>36830-6901</postalCode><adminArea1 type="Country">US</adminArea1><geocodeQuality>POINT</geocodeQuality><geocodeQualityCode>P1AAA</geocodeQualityCode><dragPoint>false</dragPoint><sideOfStreet>R</sideOfStreet><displayLatLng><latLng><lat>32.566478</lat><lng>-85.488723</lng></latLng></displayLatLng><linkId>105113616</linkId><type>s</type><latLng><lat>32.56648</lat><lng>-85.48872</lng></latLng></location></locations><locationSequence>0,1</locationSequence></route></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response><info><statusCode>500</statusCode><messages><message>Server is not configured to authorize geocode requests from this client</message></messages><copyright><imageUrl>http://tile21.mqcdn.com/res/mqlogo.gif</imageUrl><imageAltText>© 2010 MapQuest, Inc.</imageAltText><text>© 2010 MapQuest, Inc.</text></copyright></info><collections/></response>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
context "Mapquest API" do
|
4
|
+
before(:all) do
|
5
|
+
@origin = "816 Meridian St., 37207"
|
6
|
+
@destination = "1963 Canary Dr., 36830"
|
7
|
+
end
|
8
|
+
|
9
|
+
context "API working" do
|
10
|
+
|
11
|
+
describe "directions work" do
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
MapQuestDirections.any_instance.stubs(:xml).returns(File.read("spec/lib/mapquest_directions.xml"))
|
15
|
+
@directions = MapQuestDirections.new(@origin, @destination)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return distance in miles" do
|
19
|
+
@directions.distance_in_miles.should == 310
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return drive time in minutes" do
|
23
|
+
@directions.drive_time_in_minutes.should == 303
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should have a status code of 0" do
|
27
|
+
@directions.status.should == "0"
|
28
|
+
end
|
29
|
+
|
30
|
+
end #describe
|
31
|
+
end # API working
|
32
|
+
|
33
|
+
context "API not working" do
|
34
|
+
|
35
|
+
describe "Geocode distance estimation work" do
|
36
|
+
|
37
|
+
before(:each) do
|
38
|
+
MapQuestDirections.any_instance.stubs(:xml).returns(File.read("spec/lib/mapquest_directions_fail.xml"))
|
39
|
+
@directions = MapQuestDirections.new(@origin, @destination)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should return distance in miles" do
|
43
|
+
@directions.distance_in_miles.should == 0
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should return drive time in minutes" do
|
47
|
+
@directions.drive_time_in_minutes.should == 0
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should have a status code other than 0" do
|
51
|
+
@directions.status.should_not == "0"
|
52
|
+
end
|
53
|
+
|
54
|
+
end #describe
|
55
|
+
end # API not working
|
56
|
+
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'mocha'
|
3
|
+
require 'ruby-debug'
|
4
|
+
|
5
|
+
$:.unshift File.expand_path('../lib', __FILE__)
|
6
|
+
require 'mapquest_directions'
|
7
|
+
|
8
|
+
MAPQUEST_KEY = "replace_me"
|
9
|
+
# http://developer.mapquest.com/
|
10
|
+
|
11
|
+
Spec::Runner.configure do |config|
|
12
|
+
config.mock_with :mocha
|
13
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: automobile_trip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 13
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
7
|
+
- 1
|
8
8
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.9
|
9
|
+
version: 0.1.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Andy Rossmeissl
|
@@ -19,170 +18,106 @@ autorequire:
|
|
19
18
|
bindir: bin
|
20
19
|
cert_chain: []
|
21
20
|
|
22
|
-
date:
|
21
|
+
date: 2011-02-14 00:00:00 -05:00
|
23
22
|
default_executable:
|
24
23
|
dependencies:
|
25
24
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
25
|
+
name: sniff
|
27
26
|
prerelease: false
|
28
27
|
requirement: &id001 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ~>
|
32
31
|
- !ruby/object:Gem::Version
|
33
|
-
hash: 5
|
34
32
|
segments:
|
35
|
-
-
|
36
|
-
|
33
|
+
- 0
|
34
|
+
- 6
|
35
|
+
- 0
|
36
|
+
version: 0.6.0
|
37
37
|
type: :development
|
38
38
|
version_requirements: *id001
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
|
-
name:
|
40
|
+
name: emitter
|
41
41
|
prerelease: false
|
42
42
|
requirement: &id002 !ruby/object:Gem::Requirement
|
43
43
|
none: false
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
hash: 23
|
48
47
|
segments:
|
49
|
-
- 1
|
50
|
-
- 0
|
51
48
|
- 0
|
52
|
-
|
53
|
-
|
49
|
+
- 4
|
50
|
+
- 1
|
51
|
+
version: 0.4.1
|
52
|
+
type: :runtime
|
54
53
|
version_requirements: *id002
|
55
54
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
55
|
+
name: geokit
|
57
56
|
prerelease: false
|
58
57
|
requirement: &id003 !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
|
-
requirements:
|
61
|
-
- - ~>
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
hash: 57
|
64
|
-
segments:
|
65
|
-
- 0
|
66
|
-
- 8
|
67
|
-
- 3
|
68
|
-
version: 0.8.3
|
69
|
-
type: :development
|
70
|
-
version_requirements: *id003
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: jeweler
|
73
|
-
prerelease: false
|
74
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
|
-
requirements:
|
77
|
-
- - ~>
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
hash: 7
|
80
|
-
segments:
|
81
|
-
- 1
|
82
|
-
- 4
|
83
|
-
- 0
|
84
|
-
version: 1.4.0
|
85
|
-
type: :development
|
86
|
-
version_requirements: *id004
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: rake
|
89
|
-
prerelease: false
|
90
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
91
58
|
none: false
|
92
59
|
requirements:
|
93
60
|
- - ">="
|
94
61
|
- !ruby/object:Gem::Version
|
95
|
-
hash: 3
|
96
62
|
segments:
|
97
63
|
- 0
|
98
64
|
version: "0"
|
99
|
-
type: :development
|
100
|
-
version_requirements: *id005
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: rdoc
|
103
|
-
prerelease: false
|
104
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
hash: 3
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
version: "0"
|
113
|
-
type: :development
|
114
|
-
version_requirements: *id006
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: rspec
|
117
|
-
prerelease: false
|
118
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
|
-
requirements:
|
121
|
-
- - ~>
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
hash: 62196417
|
124
|
-
segments:
|
125
|
-
- 2
|
126
|
-
- 0
|
127
|
-
- 0
|
128
|
-
- beta
|
129
|
-
- 17
|
130
|
-
version: 2.0.0.beta.17
|
131
|
-
type: :development
|
132
|
-
version_requirements: *id007
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: sniff
|
135
|
-
prerelease: false
|
136
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ">="
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
hash: 3
|
142
|
-
segments:
|
143
|
-
- 0
|
144
|
-
version: "0"
|
145
|
-
type: :development
|
146
|
-
version_requirements: *id008
|
147
|
-
- !ruby/object:Gem::Dependency
|
148
|
-
name: emitter
|
149
|
-
prerelease: false
|
150
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
|
-
requirements:
|
153
|
-
- - ~>
|
154
|
-
- !ruby/object:Gem::Version
|
155
|
-
hash: 13
|
156
|
-
segments:
|
157
|
-
- 0
|
158
|
-
- 3
|
159
|
-
version: "0.3"
|
160
65
|
type: :runtime
|
161
|
-
version_requirements: *
|
66
|
+
version_requirements: *id003
|
162
67
|
description: A software model in Ruby for the greenhouse gas emissions of an automobile trip
|
163
68
|
email: andy@rossmeissl.net
|
164
69
|
executables: []
|
165
70
|
|
166
71
|
extensions: []
|
167
72
|
|
168
|
-
extra_rdoc_files:
|
169
|
-
|
170
|
-
- README.rdoc
|
73
|
+
extra_rdoc_files: []
|
74
|
+
|
171
75
|
files:
|
76
|
+
- .document
|
77
|
+
- .gitignore
|
78
|
+
- Gemfile
|
79
|
+
- Gemfile.lock
|
172
80
|
- LICENSE
|
81
|
+
- LICENSE-PREAMBLE
|
173
82
|
- README.rdoc
|
83
|
+
- Rakefile
|
84
|
+
- VERSION
|
85
|
+
- automobile_trip.gemspec
|
86
|
+
- dot.rvmrc
|
87
|
+
- features/automobile_trip_committees.feature
|
88
|
+
- features/automobile_trip_emissions.feature
|
89
|
+
- features/step_definitions/automobile_trip_steps.rb
|
90
|
+
- features/step_definitions/mapquest_steps.rb
|
91
|
+
- features/support/env.rb
|
174
92
|
- lib/automobile_trip.rb
|
175
93
|
- lib/automobile_trip/carbon_model.rb
|
176
94
|
- lib/automobile_trip/characterization.rb
|
177
|
-
- lib/automobile_trip/committee_structure.rb
|
178
95
|
- lib/automobile_trip/data.rb
|
179
96
|
- lib/automobile_trip/fallback.rb
|
180
97
|
- lib/automobile_trip/relationships.rb
|
181
98
|
- lib/automobile_trip/summarization.rb
|
99
|
+
- lib/automobile_trip/version.rb
|
182
100
|
- lib/test_support/automobile_trip_record.rb
|
183
|
-
-
|
184
|
-
-
|
185
|
-
-
|
101
|
+
- lib/test_support/db/fixtures/automobile_fuels.csv
|
102
|
+
- lib/test_support/db/fixtures/automobile_make_model_year_variants.csv
|
103
|
+
- lib/test_support/db/fixtures/automobile_make_model_years.csv
|
104
|
+
- lib/test_support/db/fixtures/automobile_make_models.csv
|
105
|
+
- lib/test_support/db/fixtures/automobile_make_years.csv
|
106
|
+
- lib/test_support/db/fixtures/automobile_makes.csv
|
107
|
+
- lib/test_support/db/fixtures/automobile_size_classes.csv
|
108
|
+
- lib/test_support/db/fixtures/automobile_type_fuel_years.csv
|
109
|
+
- lib/test_support/db/fixtures/automobile_type_years.csv
|
110
|
+
- lib/test_support/db/fixtures/fuel_years.csv
|
111
|
+
- lib/test_support/db/fixtures/fuels.csv
|
112
|
+
- lib/test_support/db/fixtures/greenhouse_gases.csv
|
113
|
+
- vendor/plugin/mapquest/README.textile
|
114
|
+
- vendor/plugin/mapquest/Rakefile
|
115
|
+
- vendor/plugin/mapquest/init.rb
|
116
|
+
- vendor/plugin/mapquest/lib/mapquest_directions.rb
|
117
|
+
- vendor/plugin/mapquest/spec/lib/mapquest_directions.xml
|
118
|
+
- vendor/plugin/mapquest/spec/lib/mapquest_directions_fail.xml
|
119
|
+
- vendor/plugin/mapquest/spec/lib/mapquest_directions_spec.rb
|
120
|
+
- vendor/plugin/mapquest/spec/spec_helper.rb
|
186
121
|
has_rdoc: true
|
187
122
|
homepage: http://github.com/brighterplanet/automobile_trip
|
188
123
|
licenses: []
|
@@ -197,7 +132,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
132
|
requirements:
|
198
133
|
- - ">="
|
199
134
|
- !ruby/object:Gem::Version
|
200
|
-
hash: 3
|
201
135
|
segments:
|
202
136
|
- 0
|
203
137
|
version: "0"
|
@@ -206,7 +140,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
140
|
requirements:
|
207
141
|
- - ">="
|
208
142
|
- !ruby/object:Gem::Version
|
209
|
-
hash: 3
|
210
143
|
segments:
|
211
144
|
- 0
|
212
145
|
version: "0"
|
@@ -218,7 +151,8 @@ signing_key:
|
|
218
151
|
specification_version: 3
|
219
152
|
summary: A carbon model
|
220
153
|
test_files:
|
221
|
-
- features/support/env.rb
|
222
154
|
- features/automobile_trip_committees.feature
|
223
155
|
- features/automobile_trip_emissions.feature
|
224
|
-
-
|
156
|
+
- features/step_definitions/automobile_trip_steps.rb
|
157
|
+
- features/step_definitions/mapquest_steps.rb
|
158
|
+
- features/support/env.rb
|