以前老用别人的 gem,从没自己写过,最近有个需求没有找到合适的 gem,所以尝试着写了第一个 gem。 地址: https://rubygems.org/gems/sina_geoip 用的是新浪的: [http://int.dpool.sina.com.cn/iplookup/iplookup.phphttp://int.dpool.sina.com.cn/iplookup/iplookup.php)]( 参考自:https://rubygems.org/gems/geo_ip 求大家轻拍,给予意见。
以下是 Readme 的内容:
Retreive the geolocation of an IP address based on the http://int.dpool.sina.com.cn/iplookup/iplookup.php webservice.
Add this line to your application's Gemfile:
gem 'sina_geoip'
And then execute:
$ bundle
Or install it yourself as:
$ gem install sina_geoip
SinaGeoIp.geolocation(ip_address)
# 12.130.132.30 = sina.com.cn (CN) GeoIp.geolocation('12.130.132.30')
returns:
{
:ret => 1,
:start => "202.108.24.0",
:end => "202.108.58.255",
:country => "中国",
:province => "北京",
:city => "北京",
:district => "",
:isp => "联通",
:type => "",
:desc => ""
}
There is an option to only retreive the country information and thus excluding the city details. This results in a faster response from the service since less queries need to be done.
GeoIp.geolocation('202.108.24.0', :precision => :country)
returns:
{
:country => "中国"
}
GeoIp.geolocation('202.108.24.0', :precision => :province)
returns:
{
:country => "中国",
:province => "北京"
}
GeoIp.geolocation('202.108.24.0', :precision => :city)
returns:
{
:country => "中国",
:province => "北京",
:city => "北京"
}
rspec spec/sina_geoip/sina_geoip_spec.rb