Получение пользовательского названия страны от возникновения IP-адреса с Ruby on Rails

Я хочу извлечь пользовательское название страны из IP-адресов посетителей.

Я мог получить IP-адрес с remote_ip. Но каков мог быть самый легкий способ получить название страны?

Это не должно быть супер точно. Какая-либо рубиновая библиотека (драгоценный камень или плагин), чтобы сделать это?

Я хочу простое и легкое решение для этого.

33
задан Jon Seigel 1 May 2010 в 21:40
поделиться

2 ответа

Вы можете использовать Geoip GEM.

Exection.RB

config.gem 'geoip'

Скачать GEOIIP.DAT.GZ из http://www.maxmind.com/app/geoliteCountry . Расстегните файл. Ниже приходит в # {Rails_root} / дБ dir.

@geoip ||= GeoIP.new("#{RAILS_ROOT}/db/GeoIP.dat")    
remote_ip = request.remote_ip 
if remote_ip != "127.0.0.1" #todo: check for other local addresses or set default value
  location_location = @geoip.country(remote_ip)
  if location_location != nil     
    @model.country = location_location[2]
  end
end
48
ответ дан 27 November 2019 в 17:34
поделиться

Самое простое - это использовать для этого существующий веб-сервис.

Есть плагины, которые позволяют делать гораздо больше, в том числе автоматически делать ваши модели геолокационными (geokit-rails), но если все, что вам нужно, это, например, код страны, просто отправьте HTTP Get на http://api.hostip. info/country.php (есть и другие сервисы, но для этого не нужен API ключ) вернет его, например :

Net::HTTP.get_response(URI.parse('http://api.hostip.info/country.php'))
=> US


Или опрос http://api.hostip.info/ вернет полный XML-ответ с указанием города, широты, долготы и т.д.

Помните, что полученные результаты не на 100% точны. Например, сейчас я нахожусь во Франции, но сообщаю, как в Германии. Это относится практически к любому IP-сервису

.
6
ответ дан 27 November 2019 в 17:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: