geonames_dump 0.0.5 → 0.0.6
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
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
|