Stores the GeoIP databases in Redis and gives it a simple way to lookup IPs and map them to countries/country codes.
Get your GeoIP country CSVs from http://www.maxmind.com/app/geolite.
Trifle supports both the IPV4 and IPV6 databases.
Loading the GeoIP databases from disk is slow, and doing that for every request is a pain. Trifle keeps your GeoIP database in memory and makes it easy to query.
Install the gem
gem install trifle
or add it to your Gemfile and bundle
# Initialize trifle = Trifle.new(Redis.new) # Load data from file trifle.load filename: "file.csv" # or files trifle.load filenames: ["file1.csv", "file2.csv"] # or directly as an array trifle.load data: preloaded_array
Additionally you can specify your own Redis key to store the Trifle in:
trifle = Trifle.new(Redis.new, key: "foobar")
You can also load the Trifle from the command line:
trifle redis://127.0.0.1:6379/0 file1.csv file2.csv
# Initialize trifle = Trifle.new(Redis.new) # Lookup for existing data trifle.find "184.108.40.206" # => ["HK", "Hong Kong"] # Lookup for missing data trifle.find "192.168.1.1" # => nil
- 0.1.1 Made 1.8.7 compatible
- 0.1.0 Handle lookup bug with no data defined
- 0.0.9 Adds support for IPV6-style IPV4 addresses
- 0.0.8 Fixed a search bug that created conflicts between IPv4 and IPv6 data
- 0.0.7 Loading now happens into separate key, making loading possible without downtime
- 0.0.6 Added a fix for invalid IPs
- 0.0.5 Fixed bug when finding IPs at the edge of the data set
- 0.0.4 Changed binary syntax
- 0.0.3 Added a binary for loading Trifle from the command line
- 0.0.2 Added support for custom Redis key
- 0.0.1 First draft
- Allow for loading of more data than just country data
- Split country data into separate Redis records