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: 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