Sha256: 98d41c18faf90aeb7c7b8c910da1a51d3e8e3d0e720186ece1aad506ee59781d

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

module GeonamesRails
  class Puller
    def pull
      @temp_geonames_files = []
      target_dir = File.join(Rails.root, 'tmp')
      
      file_names = %w(cities1000.zip cities5000.zip cities15000.zip admin1CodesASCII.txt countryInfo.txt)
      file_names.each do |file_name|
        url = "http://download.geonames.org/export/dump/#{file_name}"
      
        remote_file = open(url)

        target_file_name = File.join(target_dir, file_name)
        File.open target_file_name, 'w' do |f|
          f.write(remote_file.read.force_encoding("UTF-8"))
        end
        remote_file.close
        
        @temp_geonames_files << target_file_name
        
        file_base_name, file_extension = file_name.split('.')
        if file_extension == 'zip'
          `unzip #{target_file_name} -d #{target_dir}`
          @temp_geonames_files << File.join(target_dir, "#{file_base_name}.txt")
        end
        
      end
    end
    
    def cleanup
      @temp_geonames_files.each do |f|
        FileUtils.rm f
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
geonames_rails-0.1.1 lib/geonames_rails/puller.rb
geonames_rails-0.1.0 lib/geonames_rails/puller.rb