worlddb 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/db/at/cities.rb +34 -17
- data/lib/worlddb.rb +36 -0
- data/lib/worlddb/cli/runner.rb +1 -1
- data/lib/worlddb/models/city.rb +10 -0
- data/lib/worlddb/schema.rb +11 -4
- data/lib/worlddb/version.rb +1 -1
- metadata +4 -4
data/db/at/cities.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
|
4
|
+
#########
|
5
|
+
# sources:
|
6
|
+
# http://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Austria
|
7
|
+
# http://en.wikipedia.org/wiki/List_of_cities_in_Austria_over_5,000_population_(2001_census)
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
|
3
12
|
at = Country.find_by_key!( 'at' )
|
4
13
|
|
5
14
|
|
@@ -20,31 +29,39 @@ regions_at = [
|
|
20
29
|
Region.create_from_ary!( regions_at, country: at )
|
21
30
|
|
22
31
|
cities_at = [
|
23
|
-
['wien', 'Wien|Vienna', 'region:wien'],
|
32
|
+
['wien', 'Wien|Vienna', 'region:wien', 1664146],
|
24
33
|
|
25
|
-
['stpoelten', 'St. Pölten',
|
26
|
-
['
|
27
|
-
['
|
28
|
-
['horn', 'Horn',
|
34
|
+
['stpoelten', 'St. Pölten', 'region:noe', 51360],
|
35
|
+
['wrneustadt', 'Wiener Neustadt|Wr. Neustadt', 'region:noe', 39940],
|
36
|
+
['moedling', 'Mödling|Moedling', 'region:noe', 20649],
|
37
|
+
['horn', 'Horn', 'region:noe', 6411], # < 10000 pop
|
29
38
|
|
30
|
-
['linz', 'Linz',
|
31
|
-
['
|
39
|
+
['linz', 'Linz', 'region:ooe', 188894],
|
40
|
+
['wels', 'Wels', 'region:ooe', 58623],
|
41
|
+
['steyr', 'Steyr', 'region:ooe', 38979],
|
42
|
+
['ried', 'Ried im Innkreis', 'region:ooe', 11585],
|
32
43
|
|
33
|
-
['
|
44
|
+
['eisenstadt', 'Eisenstadt', 'region:bgld', 12367],
|
45
|
+
['mattersburg', 'Mattersburg', 'region:bgld', 6256], # < 10000 pop
|
34
46
|
|
35
|
-
['graz', 'Graz', 'region:stmk'],
|
36
|
-
['
|
37
|
-
['
|
47
|
+
['graz', 'Graz', 'region:stmk', 247698],
|
48
|
+
['kapfenberg', 'Kapfenberg', 'region:stmk', 21928],
|
49
|
+
['hartberg', 'Hartberg', 'region:stmk', 6547], # < 10000 pop
|
38
50
|
|
39
|
-
['salzburg', 'Salzburg', 'region:sbg'],
|
40
|
-
['groedig', 'Grödig', 'region:sbg'],
|
51
|
+
['salzburg', 'Salzburg', 'region:sbg', 149018],
|
52
|
+
['groedig', 'Grödig', 'region:sbg', 6638], # < 10000 pop
|
41
53
|
|
42
|
-
['
|
54
|
+
['klagenfurt', 'Klagenfurt', 'region:ktn', 92397],
|
55
|
+
['villach', 'Villach', 'region:ktn', 58480],
|
56
|
+
['wolfsberg', 'Wolfsberg', 'region:ktn', 25361],
|
43
57
|
|
44
|
-
['innsbruck', 'Innsbruck', 'region:tirol'],
|
58
|
+
['innsbruck', 'Innsbruck', 'region:tirol', 117693],
|
45
59
|
|
46
|
-
['
|
47
|
-
['
|
60
|
+
['dornbirn', 'Dornbirn', 'region:vbg', 44243],
|
61
|
+
['feldkirch', 'Feldkirch', 'region:vbg', 30093],
|
62
|
+
['bregenz', 'Bregenz', 'region:vbg', 27148],
|
63
|
+
['lustenau', 'Lustenau', 'region:vbg', 20606],
|
64
|
+
['altach', 'Altach', 'region:vbg', 5704], # < 10000 pop
|
48
65
|
]
|
49
66
|
|
50
67
|
City.create_from_ary!( cities_at, country: at )
|
data/lib/worlddb.rb
CHANGED
@@ -46,6 +46,42 @@ module WorldDB
|
|
46
46
|
Runner.new.run(ARGV)
|
47
47
|
end
|
48
48
|
|
49
|
+
|
50
|
+
# load built-in (that is, bundled within the gem) named seeds
|
51
|
+
# - pass in an array of seed names e.g. [ 'countries', 'at/cities', 'de/cities' ] etc.
|
52
|
+
|
53
|
+
def self.load( ary )
|
54
|
+
loader = Loader.new
|
55
|
+
ary.each do |name|
|
56
|
+
loader.load_fixtures_builtin( name )
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
class Deleter
|
62
|
+
## todo: move into its own file???
|
63
|
+
|
64
|
+
## make models available in worlddb module by default with namespace
|
65
|
+
# e.g. lets you use City instead of Models::City
|
66
|
+
include WorldDB::Models
|
67
|
+
|
68
|
+
def run( args=[] )
|
69
|
+
# for now delete all tables
|
70
|
+
|
71
|
+
Country.delete_all
|
72
|
+
City.delete_all
|
73
|
+
Region.delete_all
|
74
|
+
Prop.delete_all
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
# delete ALL records (use with care!)
|
80
|
+
def self.delete!
|
81
|
+
Deleter.new.run
|
82
|
+
end # method delete!
|
83
|
+
|
84
|
+
|
49
85
|
end # module WorldDB
|
50
86
|
|
51
87
|
|
data/lib/worlddb/cli/runner.rb
CHANGED
data/lib/worlddb/models/city.rb
CHANGED
@@ -26,10 +26,14 @@ class City < ActiveRecord::Base
|
|
26
26
|
|
27
27
|
attr = attr.merge( more_values )
|
28
28
|
|
29
|
+
value_numbers = []
|
30
|
+
|
29
31
|
## check for optional values
|
30
32
|
values[2..-1].each do |value|
|
31
33
|
if value.is_a? Country
|
32
34
|
attr[ :country_id ] = value.id
|
35
|
+
elsif value.is_a? Numeric
|
36
|
+
value_numbers << value
|
33
37
|
elsif value =~ /^region:/ ## region:
|
34
38
|
value_region_key = value[7..-1] ## cut off region: prefix
|
35
39
|
value_region = Region.find_by_key!( value_region_key )
|
@@ -39,6 +43,12 @@ class City < ActiveRecord::Base
|
|
39
43
|
end
|
40
44
|
end
|
41
45
|
|
46
|
+
if value_numbers.size > 0
|
47
|
+
attr[ :pop ] = value_numbers[0]
|
48
|
+
attr[ :area ] = value_numbers[1]
|
49
|
+
end
|
50
|
+
|
51
|
+
|
42
52
|
City.create!( attr )
|
43
53
|
end # each city
|
44
54
|
end
|
data/lib/worlddb/schema.rb
CHANGED
@@ -11,10 +11,12 @@ def self.up
|
|
11
11
|
ActiveRecord::Schema.define do
|
12
12
|
|
13
13
|
create_table :countries do |t|
|
14
|
-
t.string
|
15
|
-
t.string
|
16
|
-
t.string
|
17
|
-
t.string
|
14
|
+
t.string :title, :null => false
|
15
|
+
t.string :key, :null => false
|
16
|
+
t.string :tag, :null => false # short three letter tag (FIFA country code)
|
17
|
+
t.string :synonyms # comma separated list of synonyms
|
18
|
+
t.integer :pop # optional population count
|
19
|
+
t.integer :area # optional area in square km (sq. km)
|
18
20
|
t.timestamps
|
19
21
|
end
|
20
22
|
|
@@ -23,6 +25,8 @@ create_table :regions do |t|
|
|
23
25
|
t.string :key, :null => false
|
24
26
|
t.string :synonyms # comma separated list of synonyms
|
25
27
|
t.references :country, :null => false
|
28
|
+
t.integer :pop # optional population count
|
29
|
+
t.integer :area # optional area in square km (sq. km)
|
26
30
|
t.timestamps
|
27
31
|
end
|
28
32
|
|
@@ -32,6 +36,9 @@ create_table :cities do |t|
|
|
32
36
|
t.string :synonyms # comma separated list of synonyms
|
33
37
|
t.references :country, :null => false
|
34
38
|
t.references :region # optional for now
|
39
|
+
t.integer :pop # optional population count
|
40
|
+
t.integer :area # optional area in square km (sq. km)
|
41
|
+
t.boolean :capital, :null => false, :default => false # is national captial?
|
35
42
|
t.timestamps
|
36
43
|
end
|
37
44
|
|
data/lib/worlddb/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: worlddb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Gerald Bauer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-11-
|
18
|
+
date: 2012-11-06 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activerecord
|