Module: Ipgeobase

Defined in:
lib/ipgeobase.rb,
lib/ipgeobase/task.rb,
lib/ipgeobase/engine.rb,
lib/ipgeobase/railtie.rb,
lib/ipgeobase/version.rb,
app/models/ipgeobase/ip.rb,
app/models/ipgeobase/city.rb,
app/models/ipgeobase/country.rb

Defined Under Namespace

Modules: Task Classes: City, Country, Engine, Ip, Railtie

Constant Summary collapse

VERSION =
"1.0.1"

Class Method Summary collapse

Class Method Details

.find_region_by_ip(user_ip) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/ipgeobase.rb', line 16

def find_region_by_ip(user_ip)
  long = ip2long(user_ip)
  ip = Ipgeobase::Ip.where(start_ip: { '$lte' => long }).order_by({ start_ip: -1 }).limit(1).first
  if ip.nil? or ip.end_ip < long
    nil
  else
    ip.city
  end
end

.ip2long(ip) ⇒ Object



26
27
28
# File 'lib/ipgeobase.rb', line 26

def ip2long(ip)
  IPAddr.new(ip, Socket::AF_INET).to_i
end