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: 51ed09afdea83aa1dc645d29853e3ebbb6df359d
4
- data.tar.gz: 7a93c55528d389494eaecdf5bf3636fe5e920372
3
+ metadata.gz: eea4b5d481af2b78d1752707d1381d09e67e8d4d
4
+ data.tar.gz: bfa92a169e784a3a534e688f74d2c28fff5cc59c
5
5
  SHA512:
6
- metadata.gz: e6d5480e18e38dce459baf68b3e05eb84bed0e0af2d96af3930aca5e3528913e5c09d99fc73c72e5ca7d6cb649f1986f8823ad4b61a9265d0855f52b3843fa4c
7
- data.tar.gz: b23c2d146145bdeb3427e72c41a93fdc4bb7a6af88d7d56fc6bc2b6546e9c3b9684f1f25143b8a707770934fee84ce0f4afbcd54944844f61913a6c8089f9f8c
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, :foreign_key => 'geonameid', :inverse_of => :geonames_alternate_names, :primary_key => 'geonameid'
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, :inverse_of => :geonames_feature
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
  ##
@@ -1,3 +1,3 @@
1
1
  module GeonamesDump
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -5,7 +5,7 @@ require 'geonames_dump'
5
5
 
6
6
  namespace :geonames_dump do
7
7
  namespace :import do
8
- CACHE_DIR = "#{Rails.root}/db/geonames_cache"
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['QUICK']
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, GEONAMES_ALTERNATE_NAMES_COL_NAME, GeonamesAlternateName, :title => "Alternate names", :buffer => 10000)
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
- if attributes.include?(:geonameid)
237
- object = klass.where(geonameid: attributes[:geonameid]).first_or_initialize
238
- object.update_attributes(attributes)
239
- object.save if object.new_record? || object.changed?
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.5
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-27 00:00:00.000000000 Z
12
+ date: 2013-11-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-progressbar