Я знаю, что это было опубликовано несколько лет назад, но недавно у меня возникли проблемы с поиском хорошего современного камня для этого. То, что я нашел, было Geoip2 от YotpoLtd .
В моем Gemfile
gem 'geoip2'
Настройка / Настройка
Geoip2.configure do |conf|
# Mandatory
conf.license_key = 'Your MaxMind License Key'
conf.user_id = 'Your MaxMind User Id'
# Optional
conf.host = 'geoip.maxmind.com' # Or any host that you would like to work with
conf.base_path = '/geoip/v2.0' # Or any other version of this API
conf.parallel_requests = 5 # Or any other amount of parallel requests that you would like to use
end
Использование
data = Geoip2.omni('0.0.0.0') #this call is synchronous
* примечание: я полагаю, вы можете заменить 'omni' на название уровня продукта: город, страна и т. Д.
Ошибка
В случае ошибки возвращенный хеш будет содержать объект ошибки, поэтому просто проверьте его наличие
if data.error
# error handling
else #still might want to check for data's existence ( if data )
#access object as you will
data.city.names.en
data.postal.code
end
Для получения дополнительной информации о возвращенном хэше см. Документацию MaxMind Web Services