Skip to content
Snippets Groups Projects
Commit bf0ce016 authored by Alex Reisner's avatar Alex Reisner
Browse files

Unzip archive in platform-independent fashion.

parent 4c53717c
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ group :development, :test do ...@@ -5,7 +5,7 @@ group :development, :test do
gem 'mongoid', '2.6.0' gem 'mongoid', '2.6.0'
gem 'bson_ext', :platforms => :ruby gem 'bson_ext', :platforms => :ruby
gem 'geoip' gem 'geoip'
gem 'rubyzip'
gem 'rails' gem 'rails'
platforms :mri do platforms :mri do
......
require 'zip'
require 'fileutils'
require 'maxmind_database' require 'maxmind_database'
namespace :geocoder do namespace :geocoder do
...@@ -11,15 +13,21 @@ namespace :geocoder do ...@@ -11,15 +13,21 @@ namespace :geocoder do
task :download do task :download do
dir = ENV['DIR'] || "tmp/" dir = ENV['DIR'] || "tmp/"
Geocoder::MaxmindDatabase.download(:geolite_city_csv, dir) Geocoder::MaxmindDatabase.download(:geolite_city_csv, dir)
# TODO: confirm data was fetched properly
end end
desc "Extract (unzip) MaxMind GeoLite City data" desc "Extract (unzip) MaxMind GeoLite City data"
task :extract do task :extract do
dir = ENV['DIR'] || "tmp/" dir = ENV['DIR'] || "tmp/"
filename = Geocoder::MaxmindDatabase.archive_filename(:geolite_city_csv) archive_filename = Geocoder::MaxmindDatabase.archive_filename(:geolite_city_csv)
`unzip -o #{File.join(dir, filename)} -d #{dir}` # TODO: make platform independent, overwrite w/out confirm Zip::File.open(File.join(dir, archive_filename)).each do |entry|
# TODO: confirm data was unzipped properly filepath = File.join(dir, entry.name)
if File.exist? filepath
warn "File already exists (#{entry.name}), skipping"
else
FileUtils.mkdir_p(File.dirname(filepath))
entry.extract(filepath)
end
end
end end
desc "Load/refresh MaxMind GeoLite City data" desc "Load/refresh MaxMind GeoLite City data"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment