module Ipligence::Utils def self.convert_dotted_to_long(ip) dotted_ip_array = ip.split(".").map(&:to_i) (dotted_ip_array[0] * 256 * 256 * 256) + (dotted_ip_array[1] * 256 * 256) + (dotted_ip_array[2] * 256) + (dotted_ip_array[3]) end def self.repopulate_db(file_path) index = 0 total_lines = File.open(file_path).readlines.size Ipligence::Record.destroy_all CSV.foreach(file_path) do |row| Ipligence::Utils.log "Populating line [#{index + 1}/#{total_lines}]: #{row}" Ipligence::Record.create!( :ipblock_from => row[0], :ipblock_to => row[1], :country_code => row[2].empty? ? nil : row[2], :country_name => row[3].empty? ? nil : row[3], :continent_code => row[4].empty? ? nil : row[4], :continent_name => row[5].empty? ? nil : row[5], :time_zone => row[6].empty? ? nil : row[6], :region_code => row[7].empty? ? nil : row[7], :region_name => row[8].empty? ? nil : row[8], :owner => row[9].empty? ? nil : row[9], :city_name => row[10].empty? ? nil : row[10], :county_name => row[11].empty? ? nil : row[11], :post_code => row[12].empty? ? nil : row[12], :area_code => row[13].empty? ? nil : row[13], :metro_code => row[14].empty? ? nil : row[14], :latitude => row[15].empty? ? nil : row[15], :longitude => row[16].empty? ? nil : row[16] ) index += 1 end Ipligence::Utils.log "Repopulation completed!" end def self.log(message) Kernel.puts "Ipligence [#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] #{message}" end end