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.
- checksums.yaml +7 -0
- data/README.textile +11 -0
- data/Rakefile +37 -0
- data/app/controllers/gtfs_engine/agencies_controller.rb +24 -0
- data/app/controllers/gtfs_engine/application_controller.rb +21 -0
- data/app/controllers/gtfs_engine/calendar_dates_controller.rb +22 -0
- data/app/controllers/gtfs_engine/calendars_controller.rb +51 -0
- data/app/controllers/gtfs_engine/data_sets_controller.rb +47 -0
- data/app/controllers/gtfs_engine/fare_attributes_controller.rb +27 -0
- data/app/controllers/gtfs_engine/fare_rules_controller.rb +26 -0
- data/app/controllers/gtfs_engine/feed_infos_controller.rb +26 -0
- data/app/controllers/gtfs_engine/frequencies_controller.rb +26 -0
- data/app/controllers/gtfs_engine/routes_controller.rb +25 -0
- data/app/controllers/gtfs_engine/shapes_controller.rb +23 -0
- data/app/controllers/gtfs_engine/stop_times_controller.rb +28 -0
- data/app/controllers/gtfs_engine/stops_controller.rb +30 -0
- data/app/controllers/gtfs_engine/transfers_controller.rb +38 -0
- data/app/controllers/gtfs_engine/trips_controller.rb +34 -0
- data/app/helpers/gtfs_engine/default_views_helper.rb +38 -0
- data/app/helpers/gtfs_engine/fields_helper.rb +32 -0
- data/app/models/gtfs_engine/agency.rb +19 -0
- data/app/models/gtfs_engine/calendar.rb +78 -0
- data/app/models/gtfs_engine/calendar_date.rb +20 -0
- data/app/models/gtfs_engine/data_set.rb +73 -0
- data/app/models/gtfs_engine/fare_attribute.rb +19 -0
- data/app/models/gtfs_engine/fare_rule.rb +28 -0
- data/app/models/gtfs_engine/feed_info.rb +19 -0
- data/app/models/gtfs_engine/frequency.rb +20 -0
- data/app/models/gtfs_engine/route.rb +24 -0
- data/app/models/gtfs_engine/shape.rb +20 -0
- data/app/models/gtfs_engine/stop.rb +26 -0
- data/app/models/gtfs_engine/stop_time.rb +21 -0
- data/app/models/gtfs_engine/transfer.rb +23 -0
- data/app/models/gtfs_engine/trip.rb +27 -0
- data/app/views/gtfs_engine/calendars/dates.json.jbuilder +18 -0
- data/app/views/gtfs_engine/data_sets/index.json.jbuilder +26 -0
- data/app/views/gtfs_engine/data_sets/show.json.jbuilder +19 -0
- data/app/views/gtfs_engine/gtfs/index.json.jbuilder +15 -0
- data/app/views/gtfs_engine/gtfs/show.json.jbuilder +15 -0
- data/app/views/gtfs_engine/transfers/from.json.jbuilder +15 -0
- data/app/views/gtfs_engine/transfers/from_to.json.jbuilder +15 -0
- data/app/views/gtfs_engine/transfers/to.json.jbuilder +15 -0
- data/app/views/gtfs_engine/trips/block.json.jbuilder +15 -0
- data/bin/rails +8 -0
- data/config/initializers/extensions_loader.rb +15 -0
- data/config/routes.rb +45 -0
- data/db/migrate/20140320045108_create_gtfs_engine_data_sets.rb +17 -0
- data/db/migrate/20140320045232_create_gtfs_engine_calendars.rb +24 -0
- data/db/migrate/20140320045751_create_gtfs_engine_calendar_dates.rb +16 -0
- data/db/migrate/20140320050100_create_gtfs_engine_shapes.rb +20 -0
- data/db/migrate/20140320051140_create_gtfs_engine_routes.rb +22 -0
- data/db/migrate/20140320052005_create_gtfs_engine_stops.rb +28 -0
- data/db/migrate/20140320052508_create_gtfs_engine_trips.rb +26 -0
- data/db/migrate/20140320052907_create_gtfs_engine_stop_times.rb +24 -0
- data/db/migrate/20140401032609_create_gtfs_engine_agencies.rb +19 -0
- data/db/migrate/20140405235947_create_gtfs_engine_fare_attributes.rb +18 -0
- data/db/migrate/20140406063500_create_gtfs_engine_fare_rules.rb +17 -0
- data/db/migrate/20140406071922_create_gtfs_engine_frequencies.rb +17 -0
- data/db/migrate/20140406072309_create_gtfs_engine_transfers.rb +17 -0
- data/db/migrate/20140406073548_create_gtfs_engine_feed_infos.rb +16 -0
- data/lib/ext/active_record/associations/association.rb +41 -0
- data/lib/ext.rb +19 -0
- data/lib/gtfs_engine/concerns/controllers/data_access.rb +31 -0
- data/lib/gtfs_engine/concerns/controllers/gtfs.rb +158 -0
- data/lib/gtfs_engine/concerns/controllers.rb +20 -0
- data/lib/gtfs_engine/concerns.rb +19 -0
- data/lib/gtfs_engine/engine.rb +28 -0
- data/lib/gtfs_engine/exceptions.rb +35 -0
- data/lib/gtfs_engine/json_responder.rb +31 -0
- data/lib/gtfs_engine/sources.rb +86 -0
- data/lib/gtfs_engine/version.rb +84 -0
- data/lib/gtfs_engine.rb +33 -0
- data/lib/tasks/gtfs_engine_tasks.rake +89 -0
- 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
|
data/lib/gtfs_engine.rb
ADDED
@@ -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: []
|