gtfs_engine 1.2.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.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/README.textile +11 -0
  3. data/Rakefile +37 -0
  4. data/app/controllers/gtfs_engine/agencies_controller.rb +24 -0
  5. data/app/controllers/gtfs_engine/application_controller.rb +21 -0
  6. data/app/controllers/gtfs_engine/calendar_dates_controller.rb +22 -0
  7. data/app/controllers/gtfs_engine/calendars_controller.rb +51 -0
  8. data/app/controllers/gtfs_engine/data_sets_controller.rb +47 -0
  9. data/app/controllers/gtfs_engine/fare_attributes_controller.rb +27 -0
  10. data/app/controllers/gtfs_engine/fare_rules_controller.rb +26 -0
  11. data/app/controllers/gtfs_engine/feed_infos_controller.rb +26 -0
  12. data/app/controllers/gtfs_engine/frequencies_controller.rb +26 -0
  13. data/app/controllers/gtfs_engine/routes_controller.rb +25 -0
  14. data/app/controllers/gtfs_engine/shapes_controller.rb +23 -0
  15. data/app/controllers/gtfs_engine/stop_times_controller.rb +28 -0
  16. data/app/controllers/gtfs_engine/stops_controller.rb +30 -0
  17. data/app/controllers/gtfs_engine/transfers_controller.rb +38 -0
  18. data/app/controllers/gtfs_engine/trips_controller.rb +34 -0
  19. data/app/helpers/gtfs_engine/default_views_helper.rb +38 -0
  20. data/app/helpers/gtfs_engine/fields_helper.rb +32 -0
  21. data/app/models/gtfs_engine/agency.rb +19 -0
  22. data/app/models/gtfs_engine/calendar.rb +78 -0
  23. data/app/models/gtfs_engine/calendar_date.rb +20 -0
  24. data/app/models/gtfs_engine/data_set.rb +73 -0
  25. data/app/models/gtfs_engine/fare_attribute.rb +19 -0
  26. data/app/models/gtfs_engine/fare_rule.rb +28 -0
  27. data/app/models/gtfs_engine/feed_info.rb +19 -0
  28. data/app/models/gtfs_engine/frequency.rb +20 -0
  29. data/app/models/gtfs_engine/route.rb +24 -0
  30. data/app/models/gtfs_engine/shape.rb +20 -0
  31. data/app/models/gtfs_engine/stop.rb +26 -0
  32. data/app/models/gtfs_engine/stop_time.rb +21 -0
  33. data/app/models/gtfs_engine/transfer.rb +23 -0
  34. data/app/models/gtfs_engine/trip.rb +27 -0
  35. data/app/views/gtfs_engine/calendars/dates.json.jbuilder +18 -0
  36. data/app/views/gtfs_engine/data_sets/index.json.jbuilder +26 -0
  37. data/app/views/gtfs_engine/data_sets/show.json.jbuilder +19 -0
  38. data/app/views/gtfs_engine/gtfs/index.json.jbuilder +15 -0
  39. data/app/views/gtfs_engine/gtfs/show.json.jbuilder +15 -0
  40. data/app/views/gtfs_engine/transfers/from.json.jbuilder +15 -0
  41. data/app/views/gtfs_engine/transfers/from_to.json.jbuilder +15 -0
  42. data/app/views/gtfs_engine/transfers/to.json.jbuilder +15 -0
  43. data/app/views/gtfs_engine/trips/block.json.jbuilder +15 -0
  44. data/bin/rails +8 -0
  45. data/config/initializers/extensions_loader.rb +15 -0
  46. data/config/routes.rb +45 -0
  47. data/db/migrate/20140320045108_create_gtfs_engine_data_sets.rb +17 -0
  48. data/db/migrate/20140320045232_create_gtfs_engine_calendars.rb +24 -0
  49. data/db/migrate/20140320045751_create_gtfs_engine_calendar_dates.rb +16 -0
  50. data/db/migrate/20140320050100_create_gtfs_engine_shapes.rb +20 -0
  51. data/db/migrate/20140320051140_create_gtfs_engine_routes.rb +22 -0
  52. data/db/migrate/20140320052005_create_gtfs_engine_stops.rb +28 -0
  53. data/db/migrate/20140320052508_create_gtfs_engine_trips.rb +26 -0
  54. data/db/migrate/20140320052907_create_gtfs_engine_stop_times.rb +24 -0
  55. data/db/migrate/20140401032609_create_gtfs_engine_agencies.rb +19 -0
  56. data/db/migrate/20140405235947_create_gtfs_engine_fare_attributes.rb +18 -0
  57. data/db/migrate/20140406063500_create_gtfs_engine_fare_rules.rb +17 -0
  58. data/db/migrate/20140406071922_create_gtfs_engine_frequencies.rb +17 -0
  59. data/db/migrate/20140406072309_create_gtfs_engine_transfers.rb +17 -0
  60. data/db/migrate/20140406073548_create_gtfs_engine_feed_infos.rb +16 -0
  61. data/lib/ext/active_record/associations/association.rb +41 -0
  62. data/lib/ext.rb +19 -0
  63. data/lib/gtfs_engine/concerns/controllers/data_access.rb +31 -0
  64. data/lib/gtfs_engine/concerns/controllers/gtfs.rb +158 -0
  65. data/lib/gtfs_engine/concerns/controllers.rb +20 -0
  66. data/lib/gtfs_engine/concerns.rb +19 -0
  67. data/lib/gtfs_engine/engine.rb +28 -0
  68. data/lib/gtfs_engine/exceptions.rb +35 -0
  69. data/lib/gtfs_engine/json_responder.rb +31 -0
  70. data/lib/gtfs_engine/sources.rb +86 -0
  71. data/lib/gtfs_engine/version.rb +84 -0
  72. data/lib/gtfs_engine.rb +33 -0
  73. data/lib/tasks/gtfs_engine_tasks.rake +89 -0
  74. metadata +230 -0
@@ -0,0 +1,31 @@
1
+ # This file is part of the KNOWtime server.
2
+ #
3
+ # The KNOWtime server is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # The KNOWtime server is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ # details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with the KNOWtime server. If not, see <http://www.gnu.org/licenses/>.
15
+ class GtfsEngine::JsonResponder < ActionController::Responder
16
+ def to_json
17
+ if has_errors?
18
+ display_errors
19
+ else
20
+ default_render
21
+ end
22
+ end
23
+
24
+ protected
25
+
26
+ def display_errors
27
+ status_code = options[:status] || :unprocessable_entity
28
+ data = { status: 'error', data: resource_errors[:errors] }
29
+ controller.render format => data, status: status_code
30
+ end
31
+ end
@@ -0,0 +1,86 @@
1
+ # This file is part of the KNOWtime server.
2
+ #
3
+ # The KNOWtime server is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # The KNOWtime server is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ # details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with the KNOWtime server. If not, see <http://www.gnu.org/licenses/>.
15
+ require 'set'
16
+ require 'activerecord-import'
17
+
18
+ module GtfsEngine
19
+ class Sources < ::BasicObject
20
+ def initialize(config)
21
+ @config = config
22
+ @source_ids = ::Set.new
23
+ end
24
+
25
+ def method_missing(name, &block)
26
+ source = @config.sources.__send__ name
27
+ add_default_importers source
28
+ source.instance_exec source, &block if ::Kernel.block_given?
29
+ source
30
+ end
31
+
32
+ private
33
+
34
+ def add_default_importers(source)
35
+ id = source.__id__
36
+ return if @source_ids.include? id
37
+ @source_ids.add id
38
+
39
+ get_method = ::Kernel.instance_method(:method).bind self
40
+ bulk_importer = get_method.call :bulk_importer
41
+ set_id = ::OpenStruct.new id: -1
42
+
43
+ source.before do |etag|
44
+ if DataSet.where(name: source.name, etag: etag).empty?
45
+ set = DataSet.create name: source.name,
46
+ title: source.title,
47
+ etag: etag,
48
+ url: source.url
49
+ set.reload
50
+ set_id.id = set.id
51
+ else
52
+ ::Kernel.raise ::GtfsReader::SkipSourceError,
53
+ "Data Pull already exists for #{etag}"
54
+ end
55
+ end
56
+
57
+ source.handlers bulk_importer, set_id, bulk: 1024 do |importer, set_id|
58
+ agency &importer.call( Agency, set_id )
59
+ calendar &importer.call( Calendar, set_id )
60
+ calendar_dates &importer.call( CalendarDate, set_id )
61
+ fare_attributes &importer.call( FareAttribute, set_id )
62
+ fare_rules &importer.call( FareRule, set_id )
63
+ feed_info &importer.call( FeedInfo, set_id )
64
+ frequencies &importer.call( Frequency, set_id )
65
+ stop_times &importer.call( StopTime, set_id )
66
+ routes &importer.call( Route, set_id )
67
+ shapes &importer.call( Shape, set_id )
68
+ stops &importer.call( Stop, set_id )
69
+ stop_times &importer.call( StopTime, set_id )
70
+ transfers &importer.call( Transfer, set_id )
71
+ trips &importer.call( Trip, set_id )
72
+ end
73
+ end
74
+
75
+ def bulk_importer(model_class, data_set_id_holder)
76
+ ::Proc.new do
77
+ bulk do |values, count, total, columns|
78
+ id = data_set_id_holder.id
79
+ values.each {|v| v << id }
80
+ model_class.import (columns + [:data_set_id]), values
81
+ ::Rails.logger.info "Inserted #{count} #{model_class} records (total: #{total})"
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,84 @@
1
+ # This file is part of the KNOWtime server.
2
+ #
3
+ # The KNOWtime server is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # The KNOWtime server is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ # details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with the KNOWtime server. If not, see <http://www.gnu.org/licenses/>.
15
+ module GtfsEngine
16
+ module Version
17
+ # The following four lines are generated, so don't mess with them.
18
+ MAJOR = 1
19
+ MINOR = 2
20
+ PATCH = 0
21
+ BUILD = nil
22
+
23
+ def self.to_s
24
+ [MAJOR, MINOR, PATCH, BUILD].compact.join '.'
25
+ end
26
+
27
+ # A helper class which bumps the version number stored in this file
28
+ class Bumper
29
+ PARTS = %i[major minor patch]
30
+ PATTERN = %r[(\s+)MAJOR = \d+\s+MINOR = \d+\s+PATCH = \d+\s+BUILD = .+]
31
+
32
+ def initialize(filename=__FILE__, part)
33
+ raise "#{part} not one of #{PARTS}" unless PARTS.include? part
34
+ @filename, @part = filename, part
35
+ end
36
+
37
+ # Increase the version number and write it to this file
38
+ def bump
39
+ parts = new_version
40
+ text = '\1' + ["MAJOR = #{parts[:major]}",
41
+ "MINOR = #{parts[:minor]}",
42
+ "PATCH = #{parts[:patch]}",
43
+ "BUILD = #{parts[:build] || 'nil'}"].join( '\1' )
44
+
45
+ out_data = File.read( @filename ).gsub PATTERN, text
46
+ #puts out_data
47
+ File.open( @filename, 'w' ) { |out| out << out_data }
48
+ puts "Bumped version to #{to_s}"
49
+ end
50
+
51
+ #@return [String] What the new version string will be.
52
+ def to_s
53
+ p = new_version
54
+ [p[:major], p[:minor], p[:patch], p[:build]].compact.join ?.
55
+ end
56
+
57
+ private
58
+
59
+ def new_version
60
+ @vers ||= { major: MAJOR,
61
+ minor: MINOR,
62
+ patch: PATCH,
63
+ build: BUILD }.merge new_parts
64
+ end
65
+
66
+ def new_parts
67
+ case @part
68
+ when :major then {
69
+ major: MAJOR + 1,
70
+ minor: 0,
71
+ patch: 0
72
+ }
73
+ when :minor then {
74
+ minor: MINOR + 1,
75
+ patch: 0
76
+ }
77
+ else {
78
+ patch: PATCH + 1
79
+ }
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,33 @@
1
+ # This file is part of the KNOWtime server.
2
+ #
3
+ # The KNOWtime server is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # The KNOWtime server is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ # details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with the KNOWtime server. If not, see <http://www.gnu.org/licenses/>.
15
+ require 'gtfs_reader'
16
+
17
+ require 'gtfs_engine/engine'
18
+ require 'gtfs_engine/exceptions'
19
+ require 'gtfs_engine/json_responder'
20
+ require 'gtfs_engine/sources'
21
+
22
+ module GtfsEngine
23
+ extend ActiveSupport::Autoload
24
+
25
+ autoload :Concerns
26
+
27
+ class << self
28
+ def sources(&block)
29
+ @sources ||= Sources.new GtfsReader.config
30
+ block.call @sources
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,89 @@
1
+ # This file is part of the KNOWtime server.
2
+ #
3
+ # The KNOWtime server is free software: you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the Free
5
+ # Software Foundation, either version 3 of the License, or (at your option) any
6
+ # later version.
7
+ #
8
+ # The KNOWtime server is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ # details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with the KNOWtime server. If not, see <http://www.gnu.org/licenses/>.
15
+ require 'colorize'
16
+
17
+ namespace :gtfs_engine do
18
+ desc 'Update sources'
19
+ task :update, [:name] => :environment do |_, args|
20
+ GtfsReader.config do
21
+ skip_parsing true
22
+ verbose true
23
+ end
24
+
25
+ if args.name
26
+ GtfsReader.update args.name.to_sym
27
+ else
28
+ GtfsReader.update_all!
29
+ end
30
+
31
+ Rails.cache.clear
32
+ end
33
+
34
+ namespace :sets do
35
+ desc 'List the data sets for each source'
36
+ task list: :environment do
37
+ GtfsEngine::DataSet.distinct.pluck(:name).each do |name|
38
+ list_source_data_sets name
39
+ end
40
+ end
41
+
42
+ desc 'Delete a data set and all the models from it'
43
+ task :delete, [:name, :etag] => :environment do |_, args|
44
+ set = GtfsEngine::DataSet.find_by name: args.name, etag: args.etag
45
+ name, etag = [args.name.to_s.light_blue, args.etag.yellow]
46
+
47
+ if set
48
+ set.delete
49
+ puts "Deleted #{name} data set with etag #{etag}"
50
+ else
51
+ error = 'Error:'.red
52
+ puts "#{error} Could not find #{name} data set with etag #{etag}"
53
+ end
54
+ end
55
+
56
+ desc 'Count the number of models in a data set'
57
+ task :count, [:name, :etag] => :environment do |_, args|
58
+ set = GtfsEngine::DataSet.find_by name: args.name, etag: args.etag
59
+ name, etag = [args.name.to_s.light_blue, args.etag.yellow]
60
+ puts "Model count for #{name} data set with etag #{etag}"
61
+
62
+ width = model_lists.inject(0) {|max, n| [max, n.to_s.length].max }
63
+ model_lists.each do |list|
64
+ count = set.send(list).count
65
+ puts "\t#{list.to_s.rjust(width).yellow}: #{count}"
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ def list_source_data_sets(name)
72
+ puts name.underline.green
73
+
74
+ sets = GtfsEngine::DataSet.where(name: name).order :created_at
75
+ if sets.count == 0
76
+ puts "\tnone".light_black
77
+ else
78
+ sets.each do |s|
79
+ puts "\t#{s.etag.light_blue}: #{s.created_at.to_s.cyan} (#{s.url.yellow})"
80
+ end
81
+ end
82
+ end
83
+
84
+ def model_lists
85
+ @model_lists ||= begin
86
+ has_many = GtfsEngine::DataSet.reflect_on_all_associations(:has_many)
87
+ has_many.collect &:name
88
+ end
89
+ end
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gtfs_engine
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Jon Sangster
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: gtfs-reader
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord-import
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: yard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.8'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.8'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: jeweler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '4.2'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '4.2'
125
+ description: 'A Rails Engine to provide a basic RESTful interface for GTFS feeds.
126
+ GTFS Spec: https://developers.google.com/transit/gtfs'
127
+ email: jon@ertt.ca
128
+ executables:
129
+ - rails
130
+ extensions: []
131
+ extra_rdoc_files:
132
+ - README.textile
133
+ files:
134
+ - README.textile
135
+ - Rakefile
136
+ - app/controllers/gtfs_engine/agencies_controller.rb
137
+ - app/controllers/gtfs_engine/application_controller.rb
138
+ - app/controllers/gtfs_engine/calendar_dates_controller.rb
139
+ - app/controllers/gtfs_engine/calendars_controller.rb
140
+ - app/controllers/gtfs_engine/data_sets_controller.rb
141
+ - app/controllers/gtfs_engine/fare_attributes_controller.rb
142
+ - app/controllers/gtfs_engine/fare_rules_controller.rb
143
+ - app/controllers/gtfs_engine/feed_infos_controller.rb
144
+ - app/controllers/gtfs_engine/frequencies_controller.rb
145
+ - app/controllers/gtfs_engine/routes_controller.rb
146
+ - app/controllers/gtfs_engine/shapes_controller.rb
147
+ - app/controllers/gtfs_engine/stop_times_controller.rb
148
+ - app/controllers/gtfs_engine/stops_controller.rb
149
+ - app/controllers/gtfs_engine/transfers_controller.rb
150
+ - app/controllers/gtfs_engine/trips_controller.rb
151
+ - app/helpers/gtfs_engine/default_views_helper.rb
152
+ - app/helpers/gtfs_engine/fields_helper.rb
153
+ - app/models/gtfs_engine/agency.rb
154
+ - app/models/gtfs_engine/calendar.rb
155
+ - app/models/gtfs_engine/calendar_date.rb
156
+ - app/models/gtfs_engine/data_set.rb
157
+ - app/models/gtfs_engine/fare_attribute.rb
158
+ - app/models/gtfs_engine/fare_rule.rb
159
+ - app/models/gtfs_engine/feed_info.rb
160
+ - app/models/gtfs_engine/frequency.rb
161
+ - app/models/gtfs_engine/route.rb
162
+ - app/models/gtfs_engine/shape.rb
163
+ - app/models/gtfs_engine/stop.rb
164
+ - app/models/gtfs_engine/stop_time.rb
165
+ - app/models/gtfs_engine/transfer.rb
166
+ - app/models/gtfs_engine/trip.rb
167
+ - app/views/gtfs_engine/calendars/dates.json.jbuilder
168
+ - app/views/gtfs_engine/data_sets/index.json.jbuilder
169
+ - app/views/gtfs_engine/data_sets/show.json.jbuilder
170
+ - app/views/gtfs_engine/gtfs/index.json.jbuilder
171
+ - app/views/gtfs_engine/gtfs/show.json.jbuilder
172
+ - app/views/gtfs_engine/transfers/from.json.jbuilder
173
+ - app/views/gtfs_engine/transfers/from_to.json.jbuilder
174
+ - app/views/gtfs_engine/transfers/to.json.jbuilder
175
+ - app/views/gtfs_engine/trips/block.json.jbuilder
176
+ - bin/rails
177
+ - config/initializers/extensions_loader.rb
178
+ - config/routes.rb
179
+ - db/migrate/20140320045108_create_gtfs_engine_data_sets.rb
180
+ - db/migrate/20140320045232_create_gtfs_engine_calendars.rb
181
+ - db/migrate/20140320045751_create_gtfs_engine_calendar_dates.rb
182
+ - db/migrate/20140320050100_create_gtfs_engine_shapes.rb
183
+ - db/migrate/20140320051140_create_gtfs_engine_routes.rb
184
+ - db/migrate/20140320052005_create_gtfs_engine_stops.rb
185
+ - db/migrate/20140320052508_create_gtfs_engine_trips.rb
186
+ - db/migrate/20140320052907_create_gtfs_engine_stop_times.rb
187
+ - db/migrate/20140401032609_create_gtfs_engine_agencies.rb
188
+ - db/migrate/20140405235947_create_gtfs_engine_fare_attributes.rb
189
+ - db/migrate/20140406063500_create_gtfs_engine_fare_rules.rb
190
+ - db/migrate/20140406071922_create_gtfs_engine_frequencies.rb
191
+ - db/migrate/20140406072309_create_gtfs_engine_transfers.rb
192
+ - db/migrate/20140406073548_create_gtfs_engine_feed_infos.rb
193
+ - lib/ext.rb
194
+ - lib/ext/active_record/associations/association.rb
195
+ - lib/gtfs_engine.rb
196
+ - lib/gtfs_engine/concerns.rb
197
+ - lib/gtfs_engine/concerns/controllers.rb
198
+ - lib/gtfs_engine/concerns/controllers/data_access.rb
199
+ - lib/gtfs_engine/concerns/controllers/gtfs.rb
200
+ - lib/gtfs_engine/engine.rb
201
+ - lib/gtfs_engine/exceptions.rb
202
+ - lib/gtfs_engine/json_responder.rb
203
+ - lib/gtfs_engine/sources.rb
204
+ - lib/gtfs_engine/version.rb
205
+ - lib/tasks/gtfs_engine_tasks.rake
206
+ homepage: http://github.com/sangster/gtfs_engine
207
+ licenses:
208
+ - GPL 3
209
+ metadata: {}
210
+ post_install_message:
211
+ rdoc_options: []
212
+ require_paths:
213
+ - lib
214
+ required_ruby_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ requirements: []
225
+ rubyforge_project:
226
+ rubygems_version: 2.2.2
227
+ signing_key:
228
+ specification_version: 4
229
+ summary: Read General Transit Feed Specification zip files
230
+ test_files: []