0.0
No commit activity in last 3 years
No release in over 3 years
Ruby 1.9 library provides a binding to the C library for, given an IP address, return a JSON hash of best-guess geographical data
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme
= What?
This is a library which provides a single function. The function takes as
input an IP address and it outputs a hash containing best-guess geographical
information (like city, country, latitude, and longitude).

Actually this is only a Ruby binding to a C library which provides this
function. Also, you must download a large binary database with all this
mapping information. It is kindly provided free of charge by MaxMind.com. 

= Usage
   require 'geoip_city'
   db = GeoIPCity::Database.new('/opt/GeoIP/share/GeoIP/GeoLiteCity.dat')
   result = db.look_up('24.24.24.24')
   p result 
   # => {:city=>"Ithaca", 
   #     :latitude=>42.4277992248535, 
   #     :longitude=>-76.4981994628906, 
   #     :country_code3=>"USA", 
   #     :country_code=>"US",
   #     :country_name=>"United States", 
   #     :dma_code=>555,
   #     :area_code=>607, 
   #     :region=>"NY" }

There are two optional arguments to database initializer.
The first argument is the filename of the GeoIPCity.dat file 
The second argument (optional) is to specify how GeoIP should
keep the database in memory. There are three possibilities
* :filesystem -- read database from filesystem, uses least memory.
* :index -- the most frequently accessed index portion of the database, resulting in faster lookups than :filesystem, but less memory usage than :memory.
* :memory -- load database into memory, faster performance but uses more memory.
  (default)

The third argument is boolean and decides whether the system should reload the database if changes are made to the dat file. (You probably don't need this. Default: false.)

For example 

  GeoIPCity::Database.new(dbfile, :filesystem, true)

= Install
Some variation of the following should work.

1. Install the GeoCity C library. You can get it from here  
   http://www.maxmind.com/app/c
   For example, I like to install mine in /opt/GeoIP
   so I do this:
     tar -zxvf GeoIP-1.4.3.tar.gz 
     cd GeoIP-1.4.3
     ./configure --prefix=/opt/GeoIP
     make && sudo make install

2. Now install the geoip_city gem 
     sudo gem install geoip_city -- --with-geoip-dir=/opt/GeoIP

3. Download the GeoLite City database file in binary format from:
   http://www.maxmind.com/app/geolitecity
   Maybe this direct link will work:
   http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
   I put this file in 
   /opt/GeoIP/share/GeoIP/GeoLiteCity.dat

4. Use it!

= License 
Copyright (C) 2007 Ryan Dahl (ry@tinyclouds.org)

I give permission for you to do whatever you'd like to do with this software.