geonames_local 0.0.5 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/README.rdoc +27 -5
  2. data/Rakefile +25 -2
  3. data/VERSION +1 -1
  4. data/geonames_local.gemspec +64 -40
  5. data/lib/geonames_local/adapters/mongodb.rb +39 -0
  6. data/lib/{data → geonames_local/adapters}/postgres.rb +2 -2
  7. data/lib/{data → geonames_local/adapters}/tokyo.rb +1 -0
  8. data/lib/{work → geonames_local}/cli.rb +32 -27
  9. data/lib/{config → geonames_local/config}/codes.yml +0 -0
  10. data/lib/{config → geonames_local/config}/geonames.yml +3 -2
  11. data/lib/{data → geonames_local/data}/cache.rb +0 -0
  12. data/lib/{data → geonames_local/data}/geoquery.rb +0 -0
  13. data/lib/{data → geonames_local/data}/shp.rb +0 -0
  14. data/lib/{work → geonames_local}/dump.rb +1 -1
  15. data/lib/{work → geonames_local}/export.rb +0 -0
  16. data/lib/{features → geonames_local/features}/city.rb +0 -0
  17. data/lib/{features → geonames_local/features}/country.rb +0 -0
  18. data/lib/{features → geonames_local/features}/province.rb +0 -0
  19. data/lib/{features → geonames_local/features}/road.rb +0 -0
  20. data/lib/{features → geonames_local/features}/spot.rb +3 -2
  21. data/lib/{features → geonames_local/features}/zone.rb +0 -0
  22. data/lib/geonames_local.rb +14 -12
  23. data/spec/{work → geonames_local}/cli_spec.rb +0 -0
  24. data/spec/geonames_local/data/cache_spec.rb +4 -0
  25. data/spec/{data → geonames_local/data}/postgres_spec.rb +1 -1
  26. data/spec/{data → geonames_local/data}/shp_spec.rb +1 -1
  27. data/spec/{data → geonames_local/data}/tokyo_spec.rb +1 -1
  28. data/spec/{features → geonames_local/features}/road_spec.rb +1 -1
  29. data/spec/{features → geonames_local/features}/spot_spec.rb +1 -1
  30. data/spec/{features → geonames_local/features}/zone_spec.rb +1 -1
  31. metadata +88 -49
  32. data/spec/data/cache_spec.rb +0 -4
data/README.rdoc CHANGED
@@ -4,14 +4,29 @@ Download and store in tokyo or postgresql Geonames.org data.
4
4
  Making every Geoname API operation possible on your servers.
5
5
  No hit limit, fast as possible.
6
6
 
7
- == Features/Problems
8
-
9
- - Local relational mapping of geonames data
10
- - Map geonames fields to your db scheme UNDONE
11
- - Countries are a static yml file :/
12
7
 
13
8
  == Usage
14
9
 
10
+ To use the adapter, install the corresponding gem:
11
+
12
+ PostgreSQL => pg
13
+ MongoDB => mongodb (optional: mongo_ext)
14
+ Tokyo => tokyocabinet
15
+
16
+
17
+ === PostgreSQL
18
+
19
+ Be sure to use a database based on the PostGIS template.
20
+
21
+
22
+ === MongoDB
23
+
24
+ MongoDB 2D support is new, only mongo >= 1.3.3 mongodb gem >= 0.19.2
25
+ http://github.com/mongodb/mongo-ruby-driver
26
+
27
+
28
+ === Config YML
29
+
15
30
  geonames conf
16
31
 
17
32
  Will generate a "geonames.yml" file on your folder.
@@ -75,6 +90,13 @@ Default PG migration:
75
90
  add_index :provinces, :country_id
76
91
 
77
92
 
93
+ == Features/Problems
94
+
95
+ - Local relational mapping of geonames data
96
+ - Map geonames fields to your db scheme UNDONE
97
+ - Countries are a static yml file :/
98
+
99
+
78
100
  == Note on Patches/Pull Requests
79
101
 
80
102
  * Fork the project.
data/Rakefile CHANGED
@@ -11,8 +11,31 @@ begin
11
11
  gem.homepage = "http://github.com/nofxx/geonames_local"
12
12
  gem.authors = ["Marcos Piccinini"]
13
13
  gem.add_development_dependency "rspec", ">= 1.2.9"
14
- gem.add_dependency "tokyotyrant", ">= 1.10"
15
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
+ gem.add_dependency "nofxx-georuby", ">= 1.7.1"
15
+ gem.post_install_message = <<-POST_INSTALL_MESSAGE
16
+
17
+ Geonames Local
18
+ --------------
19
+
20
+ To use the adapter, install the corresponding gem:
21
+
22
+ PostgreSQL => pg
23
+ MongoDB => mongodb (optional: mongo_ext)
24
+ Tokyo => tokyocabinet
25
+
26
+ PostgreSQL
27
+ ----------
28
+
29
+ Be sure to use a database based on the PostGIS template.
30
+
31
+ MongoDB
32
+ -------
33
+
34
+ MongoDB 2D support is new, only mongo >= 1.3.3 mongodb gem >= 0.19.2
35
+ http://github.com/mongodb/mongo-ruby-driver
36
+
37
+ Have fun because:
38
+ POST_INSTALL_MESSAGE
16
39
  end
17
40
  Jeweler::GemcutterTasks.new
18
41
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.2.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{geonames_local}
8
- s.version = "0.0.5"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marcos Piccinini"]
12
- s.date = %q{2010-01-30}
12
+ s.date = %q{2010-03-19}
13
13
  s.default_executable = %q{geonames}
14
14
  s.description = %q{Dump and feed a tokyo cabinet for local geonames search}
15
15
  s.email = %q{x@nofxx.com}
@@ -27,53 +27,77 @@ Gem::Specification.new do |s|
27
27
  "VERSION",
28
28
  "bin/geonames",
29
29
  "geonames_local.gemspec",
30
- "lib/config/codes.yml",
31
- "lib/config/geonames.yml",
32
- "lib/data/cache.rb",
33
- "lib/data/geoquery.rb",
34
- "lib/data/postgres.rb",
35
- "lib/data/shp.rb",
36
- "lib/data/tokyo.rb",
37
- "lib/features/city.rb",
38
- "lib/features/country.rb",
39
- "lib/features/province.rb",
40
- "lib/features/road.rb",
41
- "lib/features/spot.rb",
42
- "lib/features/zone.rb",
43
30
  "lib/geonames_local.rb",
44
- "lib/work/cli.rb",
45
- "lib/work/dump.rb",
46
- "lib/work/export.rb",
47
- "spec/data/cache_spec.rb",
48
- "spec/data/postgres_spec.rb",
49
- "spec/data/shp_spec.rb",
50
- "spec/data/tokyo_spec.rb",
51
- "spec/features/road_spec.rb",
52
- "spec/features/spot_spec.rb",
53
- "spec/features/zone_spec.rb",
31
+ "lib/geonames_local/adapters/mongodb.rb",
32
+ "lib/geonames_local/adapters/postgres.rb",
33
+ "lib/geonames_local/adapters/tokyo.rb",
34
+ "lib/geonames_local/cli.rb",
35
+ "lib/geonames_local/config/codes.yml",
36
+ "lib/geonames_local/config/geonames.yml",
37
+ "lib/geonames_local/data/cache.rb",
38
+ "lib/geonames_local/data/geoquery.rb",
39
+ "lib/geonames_local/data/shp.rb",
40
+ "lib/geonames_local/dump.rb",
41
+ "lib/geonames_local/export.rb",
42
+ "lib/geonames_local/features/city.rb",
43
+ "lib/geonames_local/features/country.rb",
44
+ "lib/geonames_local/features/province.rb",
45
+ "lib/geonames_local/features/road.rb",
46
+ "lib/geonames_local/features/spot.rb",
47
+ "lib/geonames_local/features/zone.rb",
48
+ "spec/geonames_local/cli_spec.rb",
49
+ "spec/geonames_local/data/cache_spec.rb",
50
+ "spec/geonames_local/data/postgres_spec.rb",
51
+ "spec/geonames_local/data/shp_spec.rb",
52
+ "spec/geonames_local/data/tokyo_spec.rb",
53
+ "spec/geonames_local/features/road_spec.rb",
54
+ "spec/geonames_local/features/spot_spec.rb",
55
+ "spec/geonames_local/features/zone_spec.rb",
54
56
  "spec/geonames_local_spec.rb",
55
57
  "spec/spec.opts",
56
58
  "spec/spec_helper.rb",
57
- "spec/work/cli_spec.rb",
58
59
  "task/benchmark.rb",
59
60
  "task/benchmark_cabinet.rb"
60
61
  ]
61
62
  s.homepage = %q{http://github.com/nofxx/geonames_local}
63
+ s.post_install_message = %q{
64
+ Geonames Local
65
+ --------------
66
+
67
+ To use the adapter, install the corresponding gem:
68
+
69
+ PostgreSQL => pg
70
+ MongoDB => mongodb (optional: mongo_ext)
71
+ Tokyo => tokyocabinet
72
+
73
+ PostgreSQL
74
+ ----------
75
+
76
+ Be sure to use a database based on the PostGIS template.
77
+
78
+ MongoDB
79
+ -------
80
+
81
+ MongoDB 2D support is new, only mongo >= 1.3.3 mongodb gem >= 0.19.2
82
+ http://github.com/mongodb/mongo-ruby-driver
83
+
84
+ Have fun because:
85
+ }
62
86
  s.rdoc_options = ["--charset=UTF-8"]
63
87
  s.require_paths = ["lib"]
64
- s.rubygems_version = %q{1.3.5}
88
+ s.rubygems_version = %q{1.3.6}
65
89
  s.summary = %q{Dump and feed a tokyo local geonames db}
66
90
  s.test_files = [
67
- "spec/data/cache_spec.rb",
68
- "spec/data/postgres_spec.rb",
69
- "spec/data/shp_spec.rb",
70
- "spec/data/tokyo_spec.rb",
71
- "spec/features/road_spec.rb",
72
- "spec/features/spot_spec.rb",
73
- "spec/features/zone_spec.rb",
74
- "spec/geonames_local_spec.rb",
75
- "spec/spec_helper.rb",
76
- "spec/work/cli_spec.rb"
91
+ "spec/spec_helper.rb",
92
+ "spec/geonames_local/data/shp_spec.rb",
93
+ "spec/geonames_local/data/postgres_spec.rb",
94
+ "spec/geonames_local/data/tokyo_spec.rb",
95
+ "spec/geonames_local/data/cache_spec.rb",
96
+ "spec/geonames_local/cli_spec.rb",
97
+ "spec/geonames_local/features/spot_spec.rb",
98
+ "spec/geonames_local/features/zone_spec.rb",
99
+ "spec/geonames_local/features/road_spec.rb",
100
+ "spec/geonames_local_spec.rb"
77
101
  ]
78
102
 
79
103
  if s.respond_to? :specification_version then
@@ -82,14 +106,14 @@ Gem::Specification.new do |s|
82
106
 
83
107
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
84
108
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
85
- s.add_runtime_dependency(%q<tokyotyrant>, [">= 1.10"])
109
+ s.add_runtime_dependency(%q<nofxx-georuby>, [">= 1.7.1"])
86
110
  else
87
111
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
88
- s.add_dependency(%q<tokyotyrant>, [">= 1.10"])
112
+ s.add_dependency(%q<nofxx-georuby>, [">= 1.7.1"])
89
113
  end
90
114
  else
91
115
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
92
- s.add_dependency(%q<tokyotyrant>, [">= 1.10"])
116
+ s.add_dependency(%q<nofxx-georuby>, [">= 1.7.1"])
93
117
  end
94
118
  end
95
119
 
@@ -0,0 +1,39 @@
1
+ require "mongo"
2
+
3
+ module Geonames
4
+ class Mongodb
5
+
6
+ RESOURCES = ["countries", "provinces", "cities"]
7
+
8
+ def initialize(params)
9
+ port = params[:port] || 27017
10
+ @conn = Mongo::Connection.new(params[:host], port)
11
+ @db = @conn.db(params[:dbname])
12
+ purge
13
+ setup
14
+ end
15
+
16
+ def setup
17
+ for re in RESOURCES
18
+ coll = @db.collection(re)
19
+ coll.create_index(["id", Mongo::ASCENDING])
20
+ coll.create_index(["geom", Mongo::GEO2D], :min => 0, :max => 180)
21
+ end
22
+ end
23
+
24
+ def find(resource, id, name=nil)
25
+ @db.collection(resource.to_s).find("id" => id).to_a.first
26
+ end
27
+
28
+ def insert(resource, spot)
29
+ @db.collection(resource.to_s).insert(spot.to_hash)
30
+ end
31
+
32
+ def purge
33
+ for re in RESOURCES
34
+ @db.drop_collection(re)
35
+ end
36
+ end
37
+
38
+ end
39
+ end
@@ -30,9 +30,9 @@ module Geonames
30
30
 
31
31
  #
32
32
  # Insert a record
33
- def insert(some)
33
+ def insert(table, some)
34
34
  country_id, province_id, city_id = get_some_ids(some)
35
- case some.table
35
+ case table
36
36
  when :cities
37
37
  write("cities", {:name => some.name, :country_id => country_id,
38
38
  :geom => some.geom.as_hex_ewkb, :gid => some.gid,
@@ -1,3 +1,4 @@
1
+ require "tokyocabinet"
1
2
 
2
3
  module Geonames
3
4
  class Tokyo
@@ -4,7 +4,6 @@
4
4
  require 'optparse'
5
5
  module Geonames
6
6
  class CLI
7
-
8
7
  def self.parse_options(argv)
9
8
  options = {}
10
9
 
@@ -14,6 +13,7 @@ Geonames Command Line Usage:
14
13
 
15
14
  geonames <country code(s)> <opts>
16
15
 
16
+ geonames
17
17
  BANNER
18
18
  opts.on("-l", "--level LEVEL", String, "The level of logging to report" ) { |level| options[:level] = level }
19
19
  opts.on("-d", "--dump", "Dump DB before all" ) { options[:dump] = true }
@@ -22,11 +22,6 @@ BANNER
22
22
  opts.on("-c", "--config CONFIG", String, "Geonames Config file path" ) { |file| options[:config] = file }
23
23
  opts.on("-i", "--import CONFIG", String, "Geonames Import SHP/DBF/GPX" ) { |file| options[:shp] = file }
24
24
  opts.separator ""
25
- opts.separator "Tyrant Options:"
26
- opts.on("-t", "--tyrant", "Use tyrant" ) { options[:tyrant] = true }
27
- opts.on("-s", "--server SERVER", String, "Tyrant Server URL" ) { |url| options[:server] = url }
28
- opts.on("-p", "--port PORT", Integer, "Tyrant Server Port") { |val| options[:port] = val.to_i }
29
- opts.separator ""
30
25
  opts.separator "SHP Options:"
31
26
  opts.on("--map TYPE", Array, "Use zone/road to import" ) { |s| options[:map] = s.map(&:to_sym) }
32
27
  opts.on("--type TYPE", String, "Use zone/road to import" ) { |s| options[:type] = s }
@@ -53,8 +48,10 @@ BANNER
53
48
  end
54
49
  private_class_method :parse_options
55
50
 
51
+ class << self
52
+
56
53
  # Ugly but works?
57
- def self.work(argv)
54
+ def work(argv)
58
55
  trap(:INT) { stop! }
59
56
  trap(:TERM) { stop! }
60
57
  Opt.merge! parse_options(argv)
@@ -79,13 +76,16 @@ BANNER
79
76
  exit
80
77
  end
81
78
 
79
+ #
80
+ # If arguments scaffold, config, write down yml.
81
+ #
82
82
  if argv[0] =~ /scaff|conf/
83
83
  fname = (argv[1] || "geonames") + ".yml"
84
84
  if File.exist?(fname)
85
85
  puts "File exists."
86
86
  else
87
87
  puts "Writing to #{fname}"
88
- `cp #{File.join(File.dirname(__FILE__), '..', 'config', 'geonames.yml')} #{fname}`
88
+ `cp #{File.join(File.dirname(__FILE__), 'config', 'geonames.yml')} #{fname}`
89
89
  end
90
90
  exit
91
91
  end
@@ -94,24 +94,28 @@ BANNER
94
94
  if argv[0] =~ /csv|json/
95
95
  Geonames::Export.new(Country.all).to_csv
96
96
  else
97
+ db = load_adapter(Opt[:store])
98
+ info "Using adapter #{Opt[:store]}.."
97
99
  Geonames::Dump.work(Opt[:codes], :zip) #rescue puts "Command not found: #{comm} #{@usage}"
98
100
  Geonames::Dump.work(Opt[:codes], :dump) #rescue puts "Command not found: #{comm} #{@usage}"
99
101
  info "\n---\nTotal #{Cache[:dump].length} parsed. #{Cache[:zip].length} zips."
100
102
  info "Join dump << zip"
101
103
  unify!
102
- write_to_store!
104
+ write_to_store!(db)
103
105
  end
104
106
  end
105
107
 
106
- def self.write_to_store!
107
- db = case Opt[:store].to_sym
108
- when :tyrant then Geonames::Tokyo.new(Opt[:tyrant])
109
- when :pg then Geonames::Postgres.new(Opt[:db])
110
- else
111
- info "No store defined!"
112
- exit
113
- end
108
+ def load_adapter(name)
109
+ begin
110
+ require "geonames_local/adapters/#{name}"
111
+ Geonames.class_eval(name.capitalize).new(Opt[:db])
112
+ rescue LoadError
113
+ puts "Can't find adapter #{name}"
114
+ stop!
115
+ end
116
+ end
114
117
 
118
+ def write_to_store!(db)
115
119
  groups = Cache[:dump].group_by(&:kind)
116
120
  Cache[:provinces] = groups[:provinces]
117
121
  # ensure this order....
@@ -119,16 +123,16 @@ BANNER
119
123
  do_write(db, groups[:cities])
120
124
  end
121
125
 
122
- def self.do_write(db, val)
123
- return if val.empty?
124
- key = val[0].table
126
+ def do_write(db, values)
127
+ return if values.empty?
128
+ key = values[0].table
125
129
  start = Time.now
126
130
  writt = 0
127
- info "\nWriting #{val.length} #{key}..."
128
- val.each do |v|
129
- meth = v.respond_to?(:gid) ? [v.gid] : [v.name, true]
130
- unless db.find(v.table, *meth)
131
- db.insert(v)
131
+ info "\nWriting #{values.length} #{key}..."
132
+ values.each do |val|
133
+ meth = val.respond_to?(:gid) ? [val.gid] : [val.name, true]
134
+ unless db.find(val.table, *meth)
135
+ db.insert(val.table, val)
132
136
  writt += 1
133
137
  end
134
138
  end
@@ -136,7 +140,7 @@ BANNER
136
140
  info "#{writt} #{key} written in #{total} sec (#{(writt/total).to_i}/s)"
137
141
  end
138
142
 
139
- def self.unify!
143
+ def unify!
140
144
  start = Time.now
141
145
  Cache[:dump].map! do |spot|
142
146
  if other = Cache[:zip].find { |d| d.code == spot.code }
@@ -149,10 +153,11 @@ BANNER
149
153
  info "Done. #{(Time.now-start).to_i}s"
150
154
  end
151
155
 
152
- def self.stop!
156
+ def stop!
153
157
  puts "Closing Geonames..."
154
158
  exit
155
159
  end
160
+ end
156
161
 
157
162
  end
158
163
 
File without changes
@@ -1,7 +1,8 @@
1
1
  #
2
2
  # Geonames Local Config Example
3
3
  #
4
- :store: pg
4
+ # Stores: postgres, mongodb, tokyo, redis
5
+ :store: postgres
5
6
  :codes: [br, it]
6
7
  :level: city
7
8
  :mapping:
@@ -9,6 +10,6 @@
9
10
  :geom: true
10
11
  :db:
11
12
  :host: localhost
12
- :dbname: db
13
+ :dbname: dbname
13
14
  :user: postgres
14
15
  :password:
File without changes
File without changes
File without changes
@@ -71,6 +71,6 @@ module Geonames
71
71
  new(codes, kind)
72
72
  end
73
73
 
74
-
75
74
  end
75
+
76
76
  end
File without changes
File without changes
File without changes
@@ -73,8 +73,9 @@ module Geonames
73
73
 
74
74
  # For tokyo
75
75
  def to_hash
76
- { "gid" => @geoname_id.to_s, "kind" => @kind.to_s, "name" => @name, "ascii" => @ascii,
77
- "lat" => @lat.to_s, "lon" => @lon.to_s, "tz" => @tz, "country" => @country }
76
+ { "id" => @geoname_id, "gid" => @geoname_id.to_s, "kind" => @kind.to_s,
77
+ "name" => @name, "ascii" => @ascii, "country" => @country,
78
+ "geom" => {"y" => @lat.to_s, "x" => @lon.to_s}, "tz" => @tz }
78
79
  end
79
80
 
80
81
 
File without changes
@@ -1,21 +1,23 @@
1
- require 'features/spot'
2
- require 'features/country'
3
- require 'features/city'
4
- require 'features/road'
5
- require 'features/zone'
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
6
4
  require 'rubygems'
7
5
  require 'logger'
8
- require 'data/shp'
9
- require 'data/tokyo'
10
- require 'data/postgres'
11
- require 'work/cli'
12
- require 'work/dump'
13
- require 'work/export'
6
+ require 'yaml'
7
+ require 'geonames_local/features/spot'
8
+ require 'geonames_local/features/country'
9
+ require 'geonames_local/features/city'
10
+ require 'geonames_local/features/road'
11
+ require 'geonames_local/features/zone'
12
+ require 'geonames_local/data/shp'
13
+ require 'geonames_local/cli'
14
+ require 'geonames_local/dump'
15
+ require 'geonames_local/export'
14
16
 
15
17
  module Geonames
16
18
  Opt = {}
17
19
  Cache = {:dump => [], :zip => [], :roads => [], :zones => []}
18
- Codes = YAML.load(File.read(File.join(File.dirname(__FILE__),'config', 'codes.yml')))
20
+ Codes = YAML.load(File.read(File.join(File.dirname(__FILE__), 'geonames_local', 'config', 'codes.yml')))
19
21
  VERSION = File.read(File.join(File.dirname(__FILE__), '..', 'VERSION'))
20
22
 
21
23
  def info(txt)
File without changes
@@ -0,0 +1,4 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ # describe Cache do
4
+ # end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
 
3
3
  describe Postgres do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
 
3
3
  describe SHP do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
 
3
3
  describe "Tokyo" do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
  require "geo_ruby"
3
3
 
4
4
  describe Road do
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
3
3
  require "geo_ruby"
4
4
 
5
5
  describe Spot do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
  require "geo_ruby"
3
3
 
4
4
  describe Zone do
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geonames_local
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 1
9
+ version: 0.2.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Marcos Piccinini
@@ -9,29 +14,37 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-01-30 00:00:00 -02:00
17
+ date: 2010-03-19 00:00:00 -03:00
13
18
  default_executable: geonames
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 2
30
+ - 9
23
31
  version: 1.2.9
24
- version:
32
+ type: :development
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
- name: tokyotyrant
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
35
+ name: nofxx-georuby
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
33
- version: "1.10"
34
- version:
41
+ segments:
42
+ - 1
43
+ - 7
44
+ - 1
45
+ version: 1.7.1
46
+ type: :runtime
47
+ version_requirements: *id002
35
48
  description: Dump and feed a tokyo cabinet for local geonames search
36
49
  email: x@nofxx.com
37
50
  executables:
@@ -50,41 +63,65 @@ files:
50
63
  - VERSION
51
64
  - bin/geonames
52
65
  - geonames_local.gemspec
53
- - lib/config/codes.yml
54
- - lib/config/geonames.yml
55
- - lib/data/cache.rb
56
- - lib/data/geoquery.rb
57
- - lib/data/postgres.rb
58
- - lib/data/shp.rb
59
- - lib/data/tokyo.rb
60
- - lib/features/city.rb
61
- - lib/features/country.rb
62
- - lib/features/province.rb
63
- - lib/features/road.rb
64
- - lib/features/spot.rb
65
- - lib/features/zone.rb
66
66
  - lib/geonames_local.rb
67
- - lib/work/cli.rb
68
- - lib/work/dump.rb
69
- - lib/work/export.rb
70
- - spec/data/cache_spec.rb
71
- - spec/data/postgres_spec.rb
72
- - spec/data/shp_spec.rb
73
- - spec/data/tokyo_spec.rb
74
- - spec/features/road_spec.rb
75
- - spec/features/spot_spec.rb
76
- - spec/features/zone_spec.rb
67
+ - lib/geonames_local/adapters/mongodb.rb
68
+ - lib/geonames_local/adapters/postgres.rb
69
+ - lib/geonames_local/adapters/tokyo.rb
70
+ - lib/geonames_local/cli.rb
71
+ - lib/geonames_local/config/codes.yml
72
+ - lib/geonames_local/config/geonames.yml
73
+ - lib/geonames_local/data/cache.rb
74
+ - lib/geonames_local/data/geoquery.rb
75
+ - lib/geonames_local/data/shp.rb
76
+ - lib/geonames_local/dump.rb
77
+ - lib/geonames_local/export.rb
78
+ - lib/geonames_local/features/city.rb
79
+ - lib/geonames_local/features/country.rb
80
+ - lib/geonames_local/features/province.rb
81
+ - lib/geonames_local/features/road.rb
82
+ - lib/geonames_local/features/spot.rb
83
+ - lib/geonames_local/features/zone.rb
84
+ - spec/geonames_local/cli_spec.rb
85
+ - spec/geonames_local/data/cache_spec.rb
86
+ - spec/geonames_local/data/postgres_spec.rb
87
+ - spec/geonames_local/data/shp_spec.rb
88
+ - spec/geonames_local/data/tokyo_spec.rb
89
+ - spec/geonames_local/features/road_spec.rb
90
+ - spec/geonames_local/features/spot_spec.rb
91
+ - spec/geonames_local/features/zone_spec.rb
77
92
  - spec/geonames_local_spec.rb
78
93
  - spec/spec.opts
79
94
  - spec/spec_helper.rb
80
- - spec/work/cli_spec.rb
81
95
  - task/benchmark.rb
82
96
  - task/benchmark_cabinet.rb
83
97
  has_rdoc: true
84
98
  homepage: http://github.com/nofxx/geonames_local
85
99
  licenses: []
86
100
 
87
- post_install_message:
101
+ post_install_message: |
102
+
103
+ Geonames Local
104
+ --------------
105
+
106
+ To use the adapter, install the corresponding gem:
107
+
108
+ PostgreSQL => pg
109
+ MongoDB => mongodb (optional: mongo_ext)
110
+ Tokyo => tokyocabinet
111
+
112
+ PostgreSQL
113
+ ----------
114
+
115
+ Be sure to use a database based on the PostGIS template.
116
+
117
+ MongoDB
118
+ -------
119
+
120
+ MongoDB 2D support is new, only mongo >= 1.3.3 mongodb gem >= 0.19.2
121
+ http://github.com/mongodb/mongo-ruby-driver
122
+
123
+ Have fun because:
124
+
88
125
  rdoc_options:
89
126
  - --charset=UTF-8
90
127
  require_paths:
@@ -93,29 +130,31 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
130
  requirements:
94
131
  - - ">="
95
132
  - !ruby/object:Gem::Version
133
+ segments:
134
+ - 0
96
135
  version: "0"
97
- version:
98
136
  required_rubygems_version: !ruby/object:Gem::Requirement
99
137
  requirements:
100
138
  - - ">="
101
139
  - !ruby/object:Gem::Version
140
+ segments:
141
+ - 0
102
142
  version: "0"
103
- version:
104
143
  requirements: []
105
144
 
106
145
  rubyforge_project:
107
- rubygems_version: 1.3.5
146
+ rubygems_version: 1.3.6
108
147
  signing_key:
109
148
  specification_version: 3
110
149
  summary: Dump and feed a tokyo local geonames db
111
150
  test_files:
112
- - spec/data/cache_spec.rb
113
- - spec/data/postgres_spec.rb
114
- - spec/data/shp_spec.rb
115
- - spec/data/tokyo_spec.rb
116
- - spec/features/road_spec.rb
117
- - spec/features/spot_spec.rb
118
- - spec/features/zone_spec.rb
119
- - spec/geonames_local_spec.rb
120
151
  - spec/spec_helper.rb
121
- - spec/work/cli_spec.rb
152
+ - spec/geonames_local/data/shp_spec.rb
153
+ - spec/geonames_local/data/postgres_spec.rb
154
+ - spec/geonames_local/data/tokyo_spec.rb
155
+ - spec/geonames_local/data/cache_spec.rb
156
+ - spec/geonames_local/cli_spec.rb
157
+ - spec/geonames_local/features/spot_spec.rb
158
+ - spec/geonames_local/features/zone_spec.rb
159
+ - spec/geonames_local/features/road_spec.rb
160
+ - spec/geonames_local_spec.rb
@@ -1,4 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- # describe Cache do
4
- # end