gtfs-engine 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +37 -0
  3. data/app/controllers/gtfs_engine/agencies_controller.rb +24 -0
  4. data/app/controllers/gtfs_engine/application_controller.rb +21 -0
  5. data/app/controllers/gtfs_engine/calendar_dates_controller.rb +22 -0
  6. data/app/controllers/gtfs_engine/calendars_controller.rb +51 -0
  7. data/app/controllers/gtfs_engine/data_sets_controller.rb +47 -0
  8. data/app/controllers/gtfs_engine/fare_attributes_controller.rb +27 -0
  9. data/app/controllers/gtfs_engine/fare_rules_controller.rb +26 -0
  10. data/app/controllers/gtfs_engine/feed_infos_controller.rb +26 -0
  11. data/app/controllers/gtfs_engine/frequencies_controller.rb +26 -0
  12. data/app/controllers/gtfs_engine/routes_controller.rb +25 -0
  13. data/app/controllers/gtfs_engine/shapes_controller.rb +23 -0
  14. data/app/controllers/gtfs_engine/stop_times_controller.rb +28 -0
  15. data/app/controllers/gtfs_engine/stops_controller.rb +30 -0
  16. data/app/controllers/gtfs_engine/transfers_controller.rb +38 -0
  17. data/app/controllers/gtfs_engine/trips_controller.rb +34 -0
  18. data/app/helpers/gtfs_engine/default_views_helper.rb +42 -0
  19. data/app/helpers/gtfs_engine/fields_helper.rb +32 -0
  20. data/app/models/gtfs_engine/agency.rb +19 -0
  21. data/app/models/gtfs_engine/calendar.rb +78 -0
  22. data/app/models/gtfs_engine/calendar_date.rb +20 -0
  23. data/app/models/gtfs_engine/data_set.rb +73 -0
  24. data/app/models/gtfs_engine/fare_attribute.rb +19 -0
  25. data/app/models/gtfs_engine/fare_rule.rb +28 -0
  26. data/app/models/gtfs_engine/feed_info.rb +19 -0
  27. data/app/models/gtfs_engine/frequency.rb +20 -0
  28. data/app/models/gtfs_engine/route.rb +24 -0
  29. data/app/models/gtfs_engine/shape.rb +20 -0
  30. data/app/models/gtfs_engine/stop.rb +26 -0
  31. data/app/models/gtfs_engine/stop_time.rb +21 -0
  32. data/app/models/gtfs_engine/transfer.rb +23 -0
  33. data/app/models/gtfs_engine/trip.rb +27 -0
  34. data/app/views/gtfs_engine/calendars/dates.json.jbuilder +18 -0
  35. data/app/views/gtfs_engine/data_sets/index.json.jbuilder +28 -0
  36. data/app/views/gtfs_engine/data_sets/show.json.jbuilder +21 -0
  37. data/app/views/gtfs_engine/gtfs/index.json.jbuilder +15 -0
  38. data/app/views/gtfs_engine/gtfs/show.json.jbuilder +15 -0
  39. data/app/views/gtfs_engine/transfers/from.json.jbuilder +15 -0
  40. data/app/views/gtfs_engine/transfers/from_to.json.jbuilder +15 -0
  41. data/app/views/gtfs_engine/transfers/to.json.jbuilder +15 -0
  42. data/app/views/gtfs_engine/trips/block.json.jbuilder +15 -0
  43. data/bin/rails +8 -0
  44. data/config/initializers/extensions_loader.rb +15 -0
  45. data/config/routes.rb +45 -0
  46. data/db/migrate/20140320045108_create_gtfs_engine_data_sets.rb +17 -0
  47. data/db/migrate/20140320045232_create_gtfs_engine_calendars.rb +24 -0
  48. data/db/migrate/20140320045751_create_gtfs_engine_calendar_dates.rb +16 -0
  49. data/db/migrate/20140320050100_create_gtfs_engine_shapes.rb +20 -0
  50. data/db/migrate/20140320051140_create_gtfs_engine_routes.rb +22 -0
  51. data/db/migrate/20140320052005_create_gtfs_engine_stops.rb +28 -0
  52. data/db/migrate/20140320052508_create_gtfs_engine_trips.rb +26 -0
  53. data/db/migrate/20140320052907_create_gtfs_engine_stop_times.rb +24 -0
  54. data/db/migrate/20140401032609_create_gtfs_engine_agencies.rb +19 -0
  55. data/db/migrate/20140405235947_create_gtfs_engine_fare_attributes.rb +18 -0
  56. data/db/migrate/20140406063500_create_gtfs_engine_fare_rules.rb +17 -0
  57. data/db/migrate/20140406071922_create_gtfs_engine_frequencies.rb +17 -0
  58. data/db/migrate/20140406072309_create_gtfs_engine_transfers.rb +17 -0
  59. data/db/migrate/20140406073548_create_gtfs_engine_feed_infos.rb +16 -0
  60. data/lib/ext.rb +19 -0
  61. data/lib/ext/active_record/associations/association.rb +41 -0
  62. data/lib/gtfs_engine.rb +33 -0
  63. data/lib/gtfs_engine/concerns.rb +19 -0
  64. data/lib/gtfs_engine/concerns/controllers.rb +20 -0
  65. data/lib/gtfs_engine/concerns/controllers/data_access.rb +31 -0
  66. data/lib/gtfs_engine/concerns/controllers/gtfs.rb +158 -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/tasks/gtfs_engine_tasks.rake +89 -0
  73. metadata +242 -0
@@ -0,0 +1,28 @@
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
+ class Engine < ::Rails::Engine
17
+ isolate_namespace GtfsEngine
18
+ engine_name 'gtfs_engine'
19
+
20
+ config.generators.instance_exec do
21
+ template_engine :jbuilder
22
+ test_framework :rspec, fixture: false
23
+ stylesheets false
24
+ javascripts false
25
+ fixture_replacement :factory_girl, dir: 'spec/factories'
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,35 @@
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
+ Error = Class.new StandardError
17
+
18
+
19
+ class UnknownFilters < Error
20
+ attr_reader :fields
21
+
22
+ #@param fields [Array<String>] the names of the unknown fields which the
23
+ # caller tried to filter with
24
+ def initialize(fields)
25
+ @fields = fields
26
+ end
27
+
28
+ def to_hash
29
+ fields.each_with_object({}) do |field, hash|
30
+ hash[field] = message
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -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 = 0
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,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,242 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gtfs-engine
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jon Sangster
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-22 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'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: jeweler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '4.2'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.2'
139
+ description: 'Reads and parses zip files conforming to Google''s GTFS spec. GTFS Spec:
140
+ https://developers.google.com/transit/gtfs'
141
+ email: jon@ertt.ca
142
+ executables:
143
+ - rails
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - Rakefile
148
+ - app/controllers/gtfs_engine/agencies_controller.rb
149
+ - app/controllers/gtfs_engine/application_controller.rb
150
+ - app/controllers/gtfs_engine/calendar_dates_controller.rb
151
+ - app/controllers/gtfs_engine/calendars_controller.rb
152
+ - app/controllers/gtfs_engine/data_sets_controller.rb
153
+ - app/controllers/gtfs_engine/fare_attributes_controller.rb
154
+ - app/controllers/gtfs_engine/fare_rules_controller.rb
155
+ - app/controllers/gtfs_engine/feed_infos_controller.rb
156
+ - app/controllers/gtfs_engine/frequencies_controller.rb
157
+ - app/controllers/gtfs_engine/routes_controller.rb
158
+ - app/controllers/gtfs_engine/shapes_controller.rb
159
+ - app/controllers/gtfs_engine/stop_times_controller.rb
160
+ - app/controllers/gtfs_engine/stops_controller.rb
161
+ - app/controllers/gtfs_engine/transfers_controller.rb
162
+ - app/controllers/gtfs_engine/trips_controller.rb
163
+ - app/helpers/gtfs_engine/default_views_helper.rb
164
+ - app/helpers/gtfs_engine/fields_helper.rb
165
+ - app/models/gtfs_engine/agency.rb
166
+ - app/models/gtfs_engine/calendar.rb
167
+ - app/models/gtfs_engine/calendar_date.rb
168
+ - app/models/gtfs_engine/data_set.rb
169
+ - app/models/gtfs_engine/fare_attribute.rb
170
+ - app/models/gtfs_engine/fare_rule.rb
171
+ - app/models/gtfs_engine/feed_info.rb
172
+ - app/models/gtfs_engine/frequency.rb
173
+ - app/models/gtfs_engine/route.rb
174
+ - app/models/gtfs_engine/shape.rb
175
+ - app/models/gtfs_engine/stop.rb
176
+ - app/models/gtfs_engine/stop_time.rb
177
+ - app/models/gtfs_engine/transfer.rb
178
+ - app/models/gtfs_engine/trip.rb
179
+ - app/views/gtfs_engine/calendars/dates.json.jbuilder
180
+ - app/views/gtfs_engine/data_sets/index.json.jbuilder
181
+ - app/views/gtfs_engine/data_sets/show.json.jbuilder
182
+ - app/views/gtfs_engine/gtfs/index.json.jbuilder
183
+ - app/views/gtfs_engine/gtfs/show.json.jbuilder
184
+ - app/views/gtfs_engine/transfers/from.json.jbuilder
185
+ - app/views/gtfs_engine/transfers/from_to.json.jbuilder
186
+ - app/views/gtfs_engine/transfers/to.json.jbuilder
187
+ - app/views/gtfs_engine/trips/block.json.jbuilder
188
+ - bin/rails
189
+ - config/initializers/extensions_loader.rb
190
+ - config/routes.rb
191
+ - db/migrate/20140320045108_create_gtfs_engine_data_sets.rb
192
+ - db/migrate/20140320045232_create_gtfs_engine_calendars.rb
193
+ - db/migrate/20140320045751_create_gtfs_engine_calendar_dates.rb
194
+ - db/migrate/20140320050100_create_gtfs_engine_shapes.rb
195
+ - db/migrate/20140320051140_create_gtfs_engine_routes.rb
196
+ - db/migrate/20140320052005_create_gtfs_engine_stops.rb
197
+ - db/migrate/20140320052508_create_gtfs_engine_trips.rb
198
+ - db/migrate/20140320052907_create_gtfs_engine_stop_times.rb
199
+ - db/migrate/20140401032609_create_gtfs_engine_agencies.rb
200
+ - db/migrate/20140405235947_create_gtfs_engine_fare_attributes.rb
201
+ - db/migrate/20140406063500_create_gtfs_engine_fare_rules.rb
202
+ - db/migrate/20140406071922_create_gtfs_engine_frequencies.rb
203
+ - db/migrate/20140406072309_create_gtfs_engine_transfers.rb
204
+ - db/migrate/20140406073548_create_gtfs_engine_feed_infos.rb
205
+ - lib/ext.rb
206
+ - lib/ext/active_record/associations/association.rb
207
+ - lib/gtfs_engine.rb
208
+ - lib/gtfs_engine/concerns.rb
209
+ - lib/gtfs_engine/concerns/controllers.rb
210
+ - lib/gtfs_engine/concerns/controllers/data_access.rb
211
+ - lib/gtfs_engine/concerns/controllers/gtfs.rb
212
+ - lib/gtfs_engine/engine.rb
213
+ - lib/gtfs_engine/exceptions.rb
214
+ - lib/gtfs_engine/json_responder.rb
215
+ - lib/gtfs_engine/sources.rb
216
+ - lib/gtfs_engine/version.rb
217
+ - lib/tasks/gtfs_engine_tasks.rake
218
+ homepage: http://github.com/sangster/gtfs-engine
219
+ licenses:
220
+ - GPL 3
221
+ metadata: {}
222
+ post_install_message:
223
+ rdoc_options: []
224
+ require_paths:
225
+ - lib
226
+ required_ruby_version: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ required_rubygems_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ requirements: []
237
+ rubyforge_project:
238
+ rubygems_version: 2.2.2
239
+ signing_key:
240
+ specification_version: 4
241
+ summary: Read General Transit Feed Specification zip files
242
+ test_files: []