worlddb 0.8.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +4 -98
- data/Rakefile +1 -6
- data/lib/worlddb/cli/main.rb +170 -0
- data/lib/worlddb/cli/opts.rb +24 -50
- data/lib/worlddb/data/fixtures.rb +168 -0
- data/lib/worlddb/deleter.rb +26 -0
- data/lib/worlddb/reader.rb +8 -61
- data/lib/worlddb/stats.rb +30 -0
- data/lib/worlddb/utils.rb +0 -60
- data/lib/worlddb/version.rb +1 -2
- data/lib/worlddb.rb +24 -184
- metadata +30 -108
- data/data/africa/1_codes/fifa.yml +0 -59
- data/data/africa/1_codes/internet.yml +0 -64
- data/data/africa/1_codes/iso3.yml +0 -57
- data/data/africa/2_names/de.yml +0 -10
- data/data/africa/3_more/en.wikipedia.yml +0 -30
- data/data/africa/3_more/lang.yml +0 -63
- data/data/africa/countries.txt +0 -92
- data/data/america/1_codes/fifa.yml +0 -41
- data/data/america/1_codes/internet.yml +0 -39
- data/data/america/1_codes/iso3.yml +0 -39
- data/data/america/1_codes/motor.yml +0 -26
- data/data/america/2_names/de.yml +0 -31
- data/data/america/2_names/es.yml +0 -30
- data/data/america/3_more/en.wikipedia.yml +0 -9
- data/data/america/3_more/lang.yml +0 -60
- data/data/america/br/regions.txt +0 -27
- data/data/america/ca/cities.txt +0 -48
- data/data/america/ca/regions.txt +0 -28
- data/data/america/countries.txt +0 -70
- data/data/america/mx/cities.txt +0 -32
- data/data/america/mx/regions.txt +0 -54
- data/data/america/us/cities.txt +0 -46
- data/data/america/us/regions.txt +0 -64
- data/data/america/ve/cities.txt +0 -358
- data/data/america/ve/regions.txt +0 -46
- data/data/asia/1_codes/fifa.yml +0 -53
- data/data/asia/1_codes/internet.yml +0 -51
- data/data/asia/1_codes/iso3.yml +0 -51
- data/data/asia/2_names/de.yml +0 -9
- data/data/asia/3_more/en.wikipedia.yml +0 -26
- data/data/asia/3_more/lang.yml +0 -55
- data/data/asia/countries.txt +0 -126
- data/data/asia/jp/cities.txt +0 -3
- data/data/europe/1_codes/fifa.yml +0 -60
- data/data/europe/1_codes/internet.yml +0 -59
- data/data/europe/1_codes/iso3.yml +0 -59
- data/data/europe/1_codes/motor.yml +0 -60
- data/data/europe/2_names/de.yml +0 -42
- data/data/europe/2_names/es.yml +0 -43
- data/data/europe/3_more/en.wikipedia.yml +0 -12
- data/data/europe/3_more/lang.yml +0 -47
- data/data/europe/at/cities.txt +0 -45
- data/data/europe/at/regions.txt +0 -26
- data/data/europe/be/cities.txt +0 -19
- data/data/europe/be/regions.txt +0 -23
- data/data/europe/bg/cities.txt +0 -4
- data/data/europe/by/cities.txt +0 -4
- data/data/europe/ch/cities.txt +0 -4
- data/data/europe/countries.txt +0 -123
- data/data/europe/cy/cities.txt +0 -1
- data/data/europe/cz/cities.txt +0 -26
- data/data/europe/cz/regions.txt +0 -32
- data/data/europe/de/cities.txt +0 -44
- data/data/europe/de/regions.txt +0 -16
- data/data/europe/dk/cities.txt +0 -6
- data/data/europe/ee/cities.txt +0 -2
- data/data/europe/en/cities.txt +0 -32
- data/data/europe/en/regions.txt +0 -21
- data/data/europe/es/cities.txt +0 -17
- data/data/europe/es/regions.txt +0 -26
- data/data/europe/fi/cities.txt +0 -2
- data/data/europe/fr/cities.txt +0 -15
- data/data/europe/fr/regions.txt +0 -32
- data/data/europe/gr/cities.txt +0 -6
- data/data/europe/hr/cities.txt +0 -1
- data/data/europe/hu/cities.txt +0 -2
- data/data/europe/ie/cities.txt +0 -3
- data/data/europe/it/cities.txt +0 -17
- data/data/europe/lt/cities.txt +0 -3
- data/data/europe/lv/cities.txt +0 -4
- data/data/europe/nl/cities.txt +0 -11
- data/data/europe/no/cities.txt +0 -3
- data/data/europe/pl/cities.txt +0 -12
- data/data/europe/pt/cities.txt +0 -6
- data/data/europe/ro/cities.txt +0 -4
- data/data/europe/rs/cities.txt +0 -3
- data/data/europe/ru/cities.txt +0 -14
- data/data/europe/sc/cities.txt +0 -3
- data/data/europe/se/cities.txt +0 -3
- data/data/europe/tr/cities.txt +0 -3
- data/data/europe/ua/cities.txt +0 -9
- data/data/europe/wa/cities.txt +0 -3
- data/data/langs.yml +0 -210
- data/data/oceania/1_codes/fifa.yml +0 -21
- data/data/oceania/1_codes/internet.yml +0 -17
- data/data/oceania/1_codes/iso3.yml +0 -17
- data/data/oceania/2_names/de.yml +0 -7
- data/data/oceania/3_more/en.wikipedia.yml +0 -11
- data/data/oceania/3_more/lang.yml +0 -17
- data/data/oceania/au/cities.txt +0 -2
- data/data/oceania/countries.txt +0 -40
- data/data/tags.1.yml +0 -40
- data/data/tags.3.yml +0 -23
- data/lib/worlddb/cli/runner.rb +0 -113
- data/lib/worlddb/readers/code_reader.rb +0 -34
- data/lib/worlddb/readers/hash_reader.rb +0 -81
- data/lib/worlddb/readers/line_reader.rb +0 -45
- data/lib/worlddb/readers/values_reader.rb +0 -171
data/Manifest.txt
CHANGED
@@ -3,103 +3,12 @@ Manifest.txt
|
|
3
3
|
README.md
|
4
4
|
Rakefile
|
5
5
|
bin/worlddb
|
6
|
-
data/africa/1_codes/fifa.yml
|
7
|
-
data/africa/1_codes/internet.yml
|
8
|
-
data/africa/1_codes/iso3.yml
|
9
|
-
data/africa/2_names/de.yml
|
10
|
-
data/africa/3_more/en.wikipedia.yml
|
11
|
-
data/africa/3_more/lang.yml
|
12
|
-
data/africa/countries.txt
|
13
|
-
data/america/1_codes/fifa.yml
|
14
|
-
data/america/1_codes/internet.yml
|
15
|
-
data/america/1_codes/iso3.yml
|
16
|
-
data/america/1_codes/motor.yml
|
17
|
-
data/america/2_names/de.yml
|
18
|
-
data/america/2_names/es.yml
|
19
|
-
data/america/3_more/en.wikipedia.yml
|
20
|
-
data/america/3_more/lang.yml
|
21
|
-
data/america/br/regions.txt
|
22
|
-
data/america/ca/cities.txt
|
23
|
-
data/america/ca/regions.txt
|
24
|
-
data/america/countries.txt
|
25
|
-
data/america/mx/cities.txt
|
26
|
-
data/america/mx/regions.txt
|
27
|
-
data/america/us/cities.txt
|
28
|
-
data/america/us/regions.txt
|
29
|
-
data/america/ve/cities.txt
|
30
|
-
data/america/ve/regions.txt
|
31
|
-
data/asia/1_codes/fifa.yml
|
32
|
-
data/asia/1_codes/internet.yml
|
33
|
-
data/asia/1_codes/iso3.yml
|
34
|
-
data/asia/2_names/de.yml
|
35
|
-
data/asia/3_more/en.wikipedia.yml
|
36
|
-
data/asia/3_more/lang.yml
|
37
|
-
data/asia/countries.txt
|
38
|
-
data/asia/jp/cities.txt
|
39
|
-
data/europe/1_codes/fifa.yml
|
40
|
-
data/europe/1_codes/internet.yml
|
41
|
-
data/europe/1_codes/iso3.yml
|
42
|
-
data/europe/1_codes/motor.yml
|
43
|
-
data/europe/2_names/de.yml
|
44
|
-
data/europe/2_names/es.yml
|
45
|
-
data/europe/3_more/en.wikipedia.yml
|
46
|
-
data/europe/3_more/lang.yml
|
47
|
-
data/europe/at/cities.txt
|
48
|
-
data/europe/at/regions.txt
|
49
|
-
data/europe/be/cities.txt
|
50
|
-
data/europe/be/regions.txt
|
51
|
-
data/europe/bg/cities.txt
|
52
|
-
data/europe/by/cities.txt
|
53
|
-
data/europe/ch/cities.txt
|
54
|
-
data/europe/countries.txt
|
55
|
-
data/europe/cy/cities.txt
|
56
|
-
data/europe/cz/cities.txt
|
57
|
-
data/europe/cz/regions.txt
|
58
|
-
data/europe/de/cities.txt
|
59
|
-
data/europe/de/regions.txt
|
60
|
-
data/europe/dk/cities.txt
|
61
|
-
data/europe/ee/cities.txt
|
62
|
-
data/europe/en/cities.txt
|
63
|
-
data/europe/en/regions.txt
|
64
|
-
data/europe/es/cities.txt
|
65
|
-
data/europe/es/regions.txt
|
66
|
-
data/europe/fi/cities.txt
|
67
|
-
data/europe/fr/cities.txt
|
68
|
-
data/europe/fr/regions.txt
|
69
|
-
data/europe/gr/cities.txt
|
70
|
-
data/europe/hr/cities.txt
|
71
|
-
data/europe/hu/cities.txt
|
72
|
-
data/europe/ie/cities.txt
|
73
|
-
data/europe/it/cities.txt
|
74
|
-
data/europe/lt/cities.txt
|
75
|
-
data/europe/lv/cities.txt
|
76
|
-
data/europe/nl/cities.txt
|
77
|
-
data/europe/no/cities.txt
|
78
|
-
data/europe/pl/cities.txt
|
79
|
-
data/europe/pt/cities.txt
|
80
|
-
data/europe/ro/cities.txt
|
81
|
-
data/europe/rs/cities.txt
|
82
|
-
data/europe/ru/cities.txt
|
83
|
-
data/europe/sc/cities.txt
|
84
|
-
data/europe/se/cities.txt
|
85
|
-
data/europe/tr/cities.txt
|
86
|
-
data/europe/ua/cities.txt
|
87
|
-
data/europe/wa/cities.txt
|
88
|
-
data/langs.yml
|
89
|
-
data/oceania/1_codes/fifa.yml
|
90
|
-
data/oceania/1_codes/internet.yml
|
91
|
-
data/oceania/1_codes/iso3.yml
|
92
|
-
data/oceania/2_names/de.yml
|
93
|
-
data/oceania/3_more/en.wikipedia.yml
|
94
|
-
data/oceania/3_more/lang.yml
|
95
|
-
data/oceania/au/cities.txt
|
96
|
-
data/oceania/countries.txt
|
97
|
-
data/tags.1.yml
|
98
|
-
data/tags.3.yml
|
99
6
|
lib/worlddb.rb
|
7
|
+
lib/worlddb/cli/main.rb
|
100
8
|
lib/worlddb/cli/opts.rb
|
101
|
-
lib/worlddb/cli/runner.rb
|
102
9
|
lib/worlddb/console.rb
|
10
|
+
lib/worlddb/data/fixtures.rb
|
11
|
+
lib/worlddb/deleter.rb
|
103
12
|
lib/worlddb/models/city.rb
|
104
13
|
lib/worlddb/models/country.rb
|
105
14
|
lib/worlddb/models/lang.rb
|
@@ -109,10 +18,7 @@ lib/worlddb/models/tag.rb
|
|
109
18
|
lib/worlddb/models/tagging.rb
|
110
19
|
lib/worlddb/models/usage.rb
|
111
20
|
lib/worlddb/reader.rb
|
112
|
-
lib/worlddb/readers/code_reader.rb
|
113
|
-
lib/worlddb/readers/hash_reader.rb
|
114
|
-
lib/worlddb/readers/line_reader.rb
|
115
|
-
lib/worlddb/readers/values_reader.rb
|
116
21
|
lib/worlddb/schema.rb
|
22
|
+
lib/worlddb/stats.rb
|
117
23
|
lib/worlddb/utils.rb
|
118
24
|
lib/worlddb/version.rb
|
data/Rakefile
CHANGED
@@ -6,12 +6,6 @@ require './lib/worlddb/version.rb'
|
|
6
6
|
Hoe::plugin :manifest # more options for manifests (in the future; not yet)
|
7
7
|
|
8
8
|
|
9
|
-
###########
|
10
|
-
#### NB: if you try this script at home
|
11
|
-
# you need to create a (symbolic) link to the world.db fixtures
|
12
|
-
# e.g. use ln -s ../world.db data or similar
|
13
|
-
|
14
|
-
|
15
9
|
Hoe.spec 'worlddb' do
|
16
10
|
|
17
11
|
self.version = WorldDB::VERSION
|
@@ -25,6 +19,7 @@ Hoe.spec 'worlddb' do
|
|
25
19
|
self.email = 'opensport@googlegroups.com'
|
26
20
|
|
27
21
|
self.extra_deps = [
|
22
|
+
['textutils', '~> 0.3.0'],
|
28
23
|
['activerecord', '~> 3.2'] # NB: will include activesupport,etc.
|
29
24
|
### ['sqlite3', '~> 1.3'] # NB: install on your own; remove dependency
|
30
25
|
]
|
@@ -0,0 +1,170 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'commander/import'
|
4
|
+
|
5
|
+
require 'worlddb/cli/opts'
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
program :name, 'worlddb'
|
10
|
+
program :version, WorldDB::VERSION
|
11
|
+
program :description, "world.db command line tool, version #{WorldDB::VERSION}"
|
12
|
+
|
13
|
+
|
14
|
+
# default_command :help
|
15
|
+
default_command :load
|
16
|
+
|
17
|
+
program :help_formatter, Commander::HelpFormatter::TerminalCompact
|
18
|
+
|
19
|
+
## program :help, 'Examples', 'yada yada -try multi line later'
|
20
|
+
|
21
|
+
=begin
|
22
|
+
### add to help use new sections
|
23
|
+
|
24
|
+
Examples:
|
25
|
+
worlddb at/cities # import austrian cities
|
26
|
+
worlddb --create # create database schema
|
27
|
+
|
28
|
+
More Examples:
|
29
|
+
worlddb # show stats (table counts, table props)
|
30
|
+
|
31
|
+
Further information:
|
32
|
+
http://geraldb.github.com/world.db=end
|
33
|
+
=end
|
34
|
+
|
35
|
+
|
36
|
+
## todo: find a better name e.g. change to settings? config? safe_opts? why? why not?
|
37
|
+
myopts = WorldDB::Opts.new
|
38
|
+
|
39
|
+
### global option (required)
|
40
|
+
## todo: add check that path is valid?? possible?
|
41
|
+
|
42
|
+
global_option '-i', '--include PATH', String, "Data path (default is #{myopts.data_path})"
|
43
|
+
global_option '-d', '--dbpath PATH', String, "Database path (default is #{myopts.db_path})"
|
44
|
+
global_option '-n', '--dbname NAME', String, "Database name (datault is #{myopts.db_name})"
|
45
|
+
|
46
|
+
|
47
|
+
def connect_to_db( options )
|
48
|
+
puts WorldDB.banner
|
49
|
+
|
50
|
+
puts "working directory: #{Dir.pwd}"
|
51
|
+
|
52
|
+
db_config = {
|
53
|
+
:adapter => 'sqlite3',
|
54
|
+
:database => "#{options.db_path}/#{options.db_name}"
|
55
|
+
}
|
56
|
+
|
57
|
+
puts "Connecting to db using settings: "
|
58
|
+
pp db_config
|
59
|
+
|
60
|
+
ActiveRecord::Base.establish_connection( db_config )
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
command :create do |c|
|
65
|
+
c.syntax = 'worlddb create [options]'
|
66
|
+
c.description = 'Create DB schema'
|
67
|
+
c.action do |args, options|
|
68
|
+
myopts.merge_commander_options!( options.__hash__ )
|
69
|
+
connect_to_db( myopts )
|
70
|
+
|
71
|
+
LogDB.create
|
72
|
+
WorldDB.create
|
73
|
+
puts 'Done.'
|
74
|
+
end # action
|
75
|
+
end # command create
|
76
|
+
|
77
|
+
command :setup do |c|
|
78
|
+
c.syntax = 'worlddb setup [options]'
|
79
|
+
c.description = "Create DB schema 'n' load all data"
|
80
|
+
|
81
|
+
c.option '--delete', 'Delete all records'
|
82
|
+
|
83
|
+
c.action do |args, options|
|
84
|
+
myopts.merge_commander_options!( options.__hash__ )
|
85
|
+
connect_to_db( myopts )
|
86
|
+
|
87
|
+
if options.delete.present?
|
88
|
+
# w/ delete flag assume tables already exit
|
89
|
+
WorldDB.delete!
|
90
|
+
else
|
91
|
+
LogDB.create
|
92
|
+
WorldDB.create
|
93
|
+
end
|
94
|
+
|
95
|
+
WorldDB.read_all( myopts.data_path )
|
96
|
+
puts 'Done.'
|
97
|
+
end # action
|
98
|
+
end # command setup
|
99
|
+
|
100
|
+
command :load do |c|
|
101
|
+
## todo: how to specify many fixutes <>... ??? in syntax
|
102
|
+
c.syntax = 'worlddb load [options] <fixtures>'
|
103
|
+
c.description = 'Load fixtures'
|
104
|
+
|
105
|
+
c.option '--country KEY', String, "Default country for regions 'n' cities"
|
106
|
+
|
107
|
+
### todd/check - type flags still needed? dispatch using name and convention?
|
108
|
+
c.option '--countries', 'Use country plain text fixture reader'
|
109
|
+
c.option '--regions', 'Use regions plain text fixture reader'
|
110
|
+
c.option '--cities', 'Use cities plain text fixture reader'
|
111
|
+
|
112
|
+
c.option '--delete', 'Delete all records'
|
113
|
+
|
114
|
+
c.action do |args, options|
|
115
|
+
myopts.merge_commander_options!( options.__hash__ )
|
116
|
+
connect_to_db( myopts )
|
117
|
+
|
118
|
+
WorldDB.delete! if options.delete.present?
|
119
|
+
|
120
|
+
# read plain text country/region/city fixtures
|
121
|
+
reader = WorldDB::Reader.new # todo: add logger here?
|
122
|
+
args.each do |arg|
|
123
|
+
name = arg # File.basename( arg, '.*' )
|
124
|
+
|
125
|
+
if myopts.countries?
|
126
|
+
reader.load_countries_with_include_path( name, myopts.data_path )
|
127
|
+
elsif myopts.regions?
|
128
|
+
reader.load_regions_with_include_path( myopts.country, name, myopts.data_path )
|
129
|
+
elsif myopts.cities?
|
130
|
+
reader.load_cities_with_include_path( myopts.country, name, myopts.data_path )
|
131
|
+
else
|
132
|
+
reader.load_with_include_path( name, myopts.data_path )
|
133
|
+
## todo: issue a warning here; no fixture type specified; assume country?
|
134
|
+
end
|
135
|
+
|
136
|
+
end # each arg
|
137
|
+
|
138
|
+
puts 'Done.'
|
139
|
+
end
|
140
|
+
end # command load
|
141
|
+
|
142
|
+
|
143
|
+
command :stats do |c|
|
144
|
+
c.syntax = 'worlddb stats [options]'
|
145
|
+
c.description = 'Show stats'
|
146
|
+
c.action do |args, options|
|
147
|
+
myopts.merge_commander_options!( options.__hash__ )
|
148
|
+
connect_to_db( myopts )
|
149
|
+
|
150
|
+
WorldDB.stats
|
151
|
+
|
152
|
+
puts 'Done.'
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
|
157
|
+
command :test do |c|
|
158
|
+
c.syntax = 'worlddb test [options]'
|
159
|
+
c.description = 'Debug/test command suite'
|
160
|
+
c.action do |args, options|
|
161
|
+
puts "hello from test command"
|
162
|
+
puts "args (#{args.class.name}):"
|
163
|
+
pp args
|
164
|
+
puts "options:"
|
165
|
+
pp options
|
166
|
+
puts "options.__hash__:"
|
167
|
+
pp options.__hash__
|
168
|
+
puts 'Done.'
|
169
|
+
end
|
170
|
+
end
|
data/lib/worlddb/cli/opts.rb
CHANGED
@@ -2,6 +2,30 @@ module WorldDB
|
|
2
2
|
|
3
3
|
class Opts
|
4
4
|
|
5
|
+
def merge_commander_options!( options = {} )
|
6
|
+
@db_path = options[:dbpath] if options[:dbpath].present?
|
7
|
+
@db_name = options[:dbname] if options[:dbname].present?
|
8
|
+
|
9
|
+
@data_path = options[:include] if options[:include].present?
|
10
|
+
|
11
|
+
@country = options[:country] if options[:country].present?
|
12
|
+
|
13
|
+
@countries = options[:countries] if options[:countries].present?
|
14
|
+
@regions = options[:regions] if options[:regions].present?
|
15
|
+
@cities = options[:cities] if options[:cities].present?
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def db_path
|
20
|
+
@db_path || '.'
|
21
|
+
end
|
22
|
+
|
23
|
+
def db_name
|
24
|
+
@db_name || 'world.db'
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
|
5
29
|
def country=(value)
|
6
30
|
@country = value
|
7
31
|
end
|
@@ -37,56 +61,6 @@ class Opts
|
|
37
61
|
return false if @cities.nil? # default cities flag is false
|
38
62
|
@cities == true
|
39
63
|
end
|
40
|
-
|
41
|
-
|
42
|
-
def create=(boolean)
|
43
|
-
@create = boolean
|
44
|
-
end
|
45
|
-
|
46
|
-
def create?
|
47
|
-
return false if @create.nil? # default create flag is false
|
48
|
-
@create == true
|
49
|
-
end
|
50
|
-
|
51
|
-
|
52
|
-
def setup=(boolean)
|
53
|
-
@setup = boolean
|
54
|
-
end
|
55
|
-
|
56
|
-
def setup?
|
57
|
-
return false if @setup.nil? # default create flag is false
|
58
|
-
@setup == true
|
59
|
-
end
|
60
|
-
|
61
|
-
|
62
|
-
def delete=(boolean)
|
63
|
-
@delete = boolean
|
64
|
-
end
|
65
|
-
|
66
|
-
def delete?
|
67
|
-
return false if @delete.nil? # default create flag is false
|
68
|
-
@delete == true
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
# use loader? (that is, built-in seed data)
|
73
|
-
def load=(boolean)
|
74
|
-
@load = boolean
|
75
|
-
end
|
76
|
-
|
77
|
-
def load?
|
78
|
-
return false if @load.nil? # default create flag is false
|
79
|
-
@load == true
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
|
-
def output_path=(value)
|
84
|
-
@output_path = value
|
85
|
-
end
|
86
|
-
|
87
|
-
def output_path
|
88
|
-
@output_path || '.'
|
89
|
-
end
|
90
64
|
|
91
65
|
|
92
66
|
def data_path=(value)
|
@@ -0,0 +1,168 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
def find_world_db_path_from_gemfile_gitref!
|
5
|
+
puts "[debug] find_world_db_path..."
|
6
|
+
puts "load path:"
|
7
|
+
pp $LOAD_PATH
|
8
|
+
|
9
|
+
candidates = []
|
10
|
+
$LOAD_PATH.each do |path|
|
11
|
+
|
12
|
+
# nb: avoid matching /world.db.ruby/ (e.g. gem "worlddb", "0.10.0", :path => "../world.db.ruby")
|
13
|
+
|
14
|
+
if path =~ /\/(world\.db-[a-z0-9]+)|(world\.db)\//
|
15
|
+
candidates << path.dup
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
puts "found candidates:"
|
20
|
+
pp candidates
|
21
|
+
|
22
|
+
cand = candidates[0]
|
23
|
+
|
24
|
+
puts "cand before: #{cand}"
|
25
|
+
|
26
|
+
## nb: *? is non-greedy many operator
|
27
|
+
|
28
|
+
## todo: why not just cut off trailing /lib - is it good enough??
|
29
|
+
# it's easier
|
30
|
+
|
31
|
+
regex = /(\/world\.db.*?)(\/.*)/
|
32
|
+
cand = cand.sub( regex ) do |_|
|
33
|
+
puts "cutting off >>#{$2}<<"
|
34
|
+
$1
|
35
|
+
end
|
36
|
+
|
37
|
+
puts "cand after: #{cand}"
|
38
|
+
|
39
|
+
## todo:exit with error if not found!!!
|
40
|
+
|
41
|
+
cand
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
module WorldDB
|
47
|
+
|
48
|
+
module Fixtures # use shortcut/alias Fx?
|
49
|
+
|
50
|
+
def self.all # all builtin fixtures; helper for covenience
|
51
|
+
tag_fixtures +
|
52
|
+
country_fixtures +
|
53
|
+
lang_fixtures +
|
54
|
+
africa_fixtures +
|
55
|
+
america_fixtures +
|
56
|
+
europe_fixtures +
|
57
|
+
asia_fixtures +
|
58
|
+
oceania_fixtures
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.tag_fixtures
|
62
|
+
['tags.1', 'tags.3']
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.country_fixtures
|
66
|
+
['africa/countries',
|
67
|
+
'america/countries',
|
68
|
+
'asia/countries',
|
69
|
+
'europe/countries',
|
70
|
+
'oceania/countries']
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.lang_fixtures
|
74
|
+
['langs',
|
75
|
+
'africa/3_more/lang',
|
76
|
+
'america/3_more/lang',
|
77
|
+
'asia/3_more/lang',
|
78
|
+
'europe/3_more/lang',
|
79
|
+
'oceania/3_more/lang'
|
80
|
+
]
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.africa_fixtures
|
84
|
+
['1_codes/fifa',
|
85
|
+
'1_codes/internet',
|
86
|
+
'1_codes/iso3'].map { |path| "africa/#{path}" }
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.america_fixtures
|
90
|
+
['1_codes/fifa',
|
91
|
+
'1_codes/internet',
|
92
|
+
'1_codes/iso3',
|
93
|
+
'1_codes/motor',
|
94
|
+
'br/regions',
|
95
|
+
'ca/regions',
|
96
|
+
'ca/cities',
|
97
|
+
'mx/regions',
|
98
|
+
'mx/cities',
|
99
|
+
'us/regions',
|
100
|
+
'us/cities',
|
101
|
+
've/regions',
|
102
|
+
've/cities'].map { |path| "america/#{path}" }
|
103
|
+
end
|
104
|
+
|
105
|
+
def self.asia_fixtures
|
106
|
+
['1_codes/fifa',
|
107
|
+
'1_codes/internet',
|
108
|
+
'1_codes/iso3',
|
109
|
+
'jp/cities'].map { |path| "asia/#{path}" }
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.europe_fixtures
|
113
|
+
['1_codes/fifa',
|
114
|
+
'1_codes/internet',
|
115
|
+
'1_codes/iso3',
|
116
|
+
'1_codes/motor',
|
117
|
+
'at/regions',
|
118
|
+
'at/cities',
|
119
|
+
'be/regions',
|
120
|
+
'be/cities',
|
121
|
+
'bg/cities',
|
122
|
+
'by/cities',
|
123
|
+
'ch/cities',
|
124
|
+
'cy/cities',
|
125
|
+
'cz/regions',
|
126
|
+
'cz/cities',
|
127
|
+
'de/regions',
|
128
|
+
'de/cities',
|
129
|
+
'dk/cities',
|
130
|
+
'ee/cities',
|
131
|
+
'en/regions',
|
132
|
+
'en/cities',
|
133
|
+
'es/regions',
|
134
|
+
'es/cities',
|
135
|
+
'fi/cities',
|
136
|
+
'fr/regions',
|
137
|
+
'fr/cities',
|
138
|
+
'gr/cities',
|
139
|
+
'hr/cities',
|
140
|
+
'hu/cities',
|
141
|
+
'ie/cities',
|
142
|
+
'it/cities',
|
143
|
+
'lt/cities',
|
144
|
+
'lv/cities',
|
145
|
+
'nl/cities',
|
146
|
+
'no/cities',
|
147
|
+
'pl/cities',
|
148
|
+
'pt/cities',
|
149
|
+
'ro/cities',
|
150
|
+
'rs/cities',
|
151
|
+
'ru/cities',
|
152
|
+
'sc/cities',
|
153
|
+
'se/cities',
|
154
|
+
'tr/cities',
|
155
|
+
'ua/cities',
|
156
|
+
'wa/cities'].map { |path| "europe/#{path}" }
|
157
|
+
end
|
158
|
+
|
159
|
+
def self.oceania_fixtures
|
160
|
+
['1_codes/fifa',
|
161
|
+
'1_codes/internet',
|
162
|
+
'1_codes/iso3',
|
163
|
+
'au/cities'].map { |path| "oceania/#{path}" }
|
164
|
+
end
|
165
|
+
|
166
|
+
end # module Fixtures
|
167
|
+
|
168
|
+
end # module WorldDB
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module WorldDB
|
4
|
+
|
5
|
+
class Deleter
|
6
|
+
|
7
|
+
## make models available in worlddb module by default with namespace
|
8
|
+
# e.g. lets you use City instead of Models::City
|
9
|
+
include WorldDB::Models
|
10
|
+
|
11
|
+
def run
|
12
|
+
# for now delete all tables
|
13
|
+
|
14
|
+
Tagging.delete_all
|
15
|
+
Tag.delete_all
|
16
|
+
City.delete_all
|
17
|
+
Region.delete_all
|
18
|
+
Country.delete_all
|
19
|
+
Usage.delete_all
|
20
|
+
Lang.delete_all
|
21
|
+
Prop.delete_all
|
22
|
+
end
|
23
|
+
|
24
|
+
end # class Deleter
|
25
|
+
|
26
|
+
end # module WorldDB
|