Sha256: c416ab316645b6aae4b58ce6bb74283de0512a86ffd6d3369952f1db8a037fe1

Contents?: true

Size: 1.13 KB

Versions: 13

Compression:

Stored size: 1.13 KB

Contents

namespace :geocode do
  desc "Geocode all objects without coordinates."
  task :all => :environment do
    class_name = ENV['CLASS'] || ENV['class']
    sleep_timer = ENV['SLEEP'] || ENV['sleep']
    batch = ENV['BATCH'] || ENV['batch']
    reverse = ENV['REVERSE'] || ENV['reverse']
    raise "Please specify a CLASS (model)" unless class_name
    klass = class_from_string(class_name)
    batch = batch.to_i unless batch.nil?
    reverse = false unless reverse.to_s.downcase == 'true'

    if reverse
      klass.not_reverse_geocoded.find_each(batch_size: batch) do |obj|
        obj.reverse_geocode; obj.save
        sleep(sleep_timer.to_f) unless sleep_timer.nil?
      end
    else
      klass.not_geocoded.find_each(batch_size: batch) do |obj|
        obj.geocode; obj.save
        sleep(sleep_timer.to_f) unless sleep_timer.nil?
      end
    end
  end
end

##
# Get a class object from the string given in the shell environment.
# Similar to ActiveSupport's +constantize+ method.
#
def class_from_string(class_name)
  parts = class_name.split("::")
  constant = Object
  parts.each do |part|
    constant = constant.const_get(part)
  end
  constant
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
geocoder-1.3.7 lib/tasks/geocoder.rake
geocoder-1.3.6 lib/tasks/geocoder.rake
geocoder-1.3.5 lib/tasks/geocoder.rake
broken-geocoder-1.3.6 lib/tasks/geocoder.rake
broken-geocoder-1.3.5 lib/tasks/geocoder.rake
broken-geocoder-1.3.4 lib/tasks/geocoder.rake
geocoder-1.3.4 lib/tasks/geocoder.rake
geocoder-1.3.3 lib/tasks/geocoder.rake
geocoder-1.3.2 lib/tasks/geocoder.rake
geocoder-1.3.1 lib/tasks/geocoder.rake
geocoder-1.3.0 lib/tasks/geocoder.rake
geocoder-1.2.14 lib/tasks/geocoder.rake
geocoder-1.2.13 lib/tasks/geocoder.rake