geonames_dump 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eea4b5d481af2b78d1752707d1381d09e67e8d4d
|
4
|
+
data.tar.gz: bfa92a169e784a3a534e688f74d2c28fff5cc59c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3740d92c6e4aaf6d4627f73d4100b85439fcc79cfbee02b9805f261a30ee64ea2fbb13983551faee9820b8c3338ab89bcfa0e4c9643ecef11ebc9085d6b734c9
|
7
|
+
data.tar.gz: cbdd2ce8a806a77c2dea9884ac5e070a22eef5d8ec93b2bfcb6bdfe0acbd2d776e1f5d4aac59844d3cde38f05e74d51ea410482eebe5dcf54e8d1513ee83da96
|
@@ -2,7 +2,10 @@ class GeonamesAlternateName < ActiveRecord::Base
|
|
2
2
|
validates_uniqueness_of :alternate_name_id
|
3
3
|
before_save :set_alternate_name_first_letters
|
4
4
|
|
5
|
-
belongs_to :geonames_feature,
|
5
|
+
belongs_to :geonames_feature,
|
6
|
+
:inverse_of => :geonames_alternate_names,
|
7
|
+
:primary_key => 'geonameid',
|
8
|
+
:foreign_key => 'geonameid'
|
6
9
|
alias_method :feature, :geonames_feature
|
7
10
|
|
8
11
|
##
|
@@ -2,7 +2,10 @@ class GeonamesFeature < ActiveRecord::Base
|
|
2
2
|
validates_uniqueness_of :geonameid
|
3
3
|
before_save :set_asciiname_first_letters
|
4
4
|
|
5
|
-
has_many :geonames_alternate_names,
|
5
|
+
has_many :geonames_alternate_names,
|
6
|
+
:inverse_of => :geonames_feature,
|
7
|
+
:primary_key => 'geonameid',
|
8
|
+
:foreign_key => 'geonameid'
|
6
9
|
alias_method :alternate_names, :geonames_alternate_names
|
7
10
|
|
8
11
|
##
|
data/lib/tasks/import.rake
CHANGED
@@ -5,7 +5,7 @@ require 'geonames_dump'
|
|
5
5
|
|
6
6
|
namespace :geonames_dump do
|
7
7
|
namespace :import do
|
8
|
-
CACHE_DIR =
|
8
|
+
CACHE_DIR = Rails.root.join('db', 'geonames_cache')
|
9
9
|
|
10
10
|
GEONAMES_FEATURES_COL_NAME = [
|
11
11
|
:geonameid, :name, :asciiname, :alternatenames, :latitude, :longitude,
|
@@ -28,7 +28,7 @@ namespace :geonames_dump do
|
|
28
28
|
task :prepare do
|
29
29
|
Dir::mkdir(CACHE_DIR) rescue nil
|
30
30
|
disable_logger
|
31
|
-
disable_validations if ENV['
|
31
|
+
disable_validations if ENV['SKIP_VALIDATION']
|
32
32
|
end
|
33
33
|
|
34
34
|
desc 'Import ALL geonames data.'
|
@@ -82,7 +82,12 @@ namespace :geonames_dump do
|
|
82
82
|
txt_file: 'alternateNames.txt')
|
83
83
|
|
84
84
|
File.open(txt_file) do |f|
|
85
|
-
insert_data(f,
|
85
|
+
insert_data(f,
|
86
|
+
GEONAMES_ALTERNATE_NAMES_COL_NAME,
|
87
|
+
GeonamesAlternateName,
|
88
|
+
:title => "Alternate names",
|
89
|
+
:buffer => 10000,
|
90
|
+
:primary_key => [:alternate_name_id, :geonameid])
|
86
91
|
end
|
87
92
|
end
|
88
93
|
|
@@ -199,6 +204,7 @@ namespace :geonames_dump do
|
|
199
204
|
file_size = file_fd.stat.size
|
200
205
|
title = options[:title] || 'Feature Import'
|
201
206
|
buffer = options[:buffer] || 1000
|
207
|
+
primary_key = options[:primary_key] || :geonameid
|
202
208
|
progress_bar = ProgressBar.create(:title => title, :total => file_size, :format => '%a |%b>%i| %p%% %t')
|
203
209
|
|
204
210
|
# create block array
|
@@ -233,10 +239,19 @@ namespace :geonames_dump do
|
|
233
239
|
# create or update object
|
234
240
|
#if filter?(attributes) && (block && block.call(attributes))
|
235
241
|
blocks.add_block do
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
242
|
+
primary_keys = primary_key.is_a?(Array) ? primary_key : [primary_key]
|
243
|
+
if primary_keys.all? { |key| attributes.include?(key) }
|
244
|
+
if ENV['QUICK']
|
245
|
+
object = klass.create(attributes)
|
246
|
+
else
|
247
|
+
where_condition = {}
|
248
|
+
primary_keys.each do |key|
|
249
|
+
where_condition[key] = attributes[key]
|
250
|
+
end
|
251
|
+
object = klass.where(where_condition).first_or_initialize
|
252
|
+
object.update_attributes(attributes)
|
253
|
+
object.save if object.new_record? || object.changed?
|
254
|
+
end
|
240
255
|
else
|
241
256
|
klass.create(attributes)
|
242
257
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geonames_dump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Pooley
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-progressbar
|