class GeocodeRecords

Constants

VERSION

Attributes

clean[R]
database_url[R]
include_invalid[R]

optional

num[R]
subquery[R]
table_name[R]

Public Class Methods

new( database_url:, table_name:, subquery: nil, include_invalid: false, num: 1, clean: true ) click to toggle source
# File lib/geocode_records.rb, line 41
 def initialize(
  database_url:,
  table_name:,
  subquery: nil,
  include_invalid: false,
  num: 1,
  clean: true
)
  @database_url = database_url
  @table_name = table_name
  @subquery = subquery
  @include_invalid = include_invalid
  @num = num
  @clean = clean
end
new_tmp_path(hint) click to toggle source
# File lib/geocode_records.rb, line 14
def new_tmp_path(hint)
  Dir::Tmpname.create(hint[0,64].delete('"').gsub(/\W/,'_').squeeze) {}
end
psql(database_url, sql) click to toggle source
# File lib/geocode_records.rb, line 18
def psql(database_url, sql)
  system(
    'psql',
    database_url,
    '-v', 'ON_ERROR_STOP=on',
    # '--echo-all',
    '--quiet',
    '--no-psqlrc',
    '--pset', 'pager=off',
    '--command', sql
  ) or raise("psql failed")
end

Public Instance Methods

perform() click to toggle source
# File lib/geocode_records.rb, line 57
def perform
  geocode glob: false
  geocode glob: true
end

Private Instance Methods

geocode(glob:) click to toggle source
# File lib/geocode_records.rb, line 64
def geocode(glob:)
  ungeocoded_path = nil
  geocoded_path = nil
  begin
    ungeocoded_path = DumpSqlToCsv.new(
      database_url: database_url,
      table_name: table_name,
      subquery: subquery,
      glob: glob,
      num: num,
    ).perform
    unless File.size(ungeocoded_path) > 32
      return
    end
    geocoded_path = GeocodeCsv.new(
      path: ungeocoded_path,
      glob: glob,
      include_invalid: include_invalid,
      num: num,
    ).perform
    UpdateTableFromCsv.new(
      database_url: database_url,
      table_name: table_name,
      path: geocoded_path,
      num: num,
    ).perform
  ensure
    if clean
      FileUtils.rm_f geocoded_path if geocoded_path
      FileUtils.rm_f ungeocoded_path if ungeocoded_path
    end
  end
end