ipgeobase_mongoid 0.0.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +43 -0
- data/README.rdoc +28 -18
- data/Rakefile +2 -0
- data/app/models/ipgeobase/city.rb +21 -0
- data/app/models/ipgeobase/country.rb +14 -0
- data/app/models/ipgeobase/ip.rb +14 -0
- data/ipgeobase_mongoid.gemspec +6 -3
- data/lib/ipgeobase.rb +19 -24
- data/lib/ipgeobase/engine.rb +5 -0
- data/lib/ipgeobase/railtie.rb +8 -0
- data/lib/ipgeobase/task.rb +19 -17
- data/lib/{tasks/ipgeobase.rake → ipgeobase/tasks.rake} +10 -8
- data/lib/ipgeobase/version.rb +1 -1
- data/lib/ipgeobase_mongoid.rb +2 -0
- data/spec/ipgeobase_spec.rb +11 -0
- data/spec/spec_helper.rb +46 -0
- data/spec/support/mongoid.yml +8 -0
- metadata +65 -22
- data/app/models/ipgeobase_city.rb +0 -21
- data/app/models/ipgeobase_country.rb +0 -12
- data/app/models/ipgeobase_ip.rb +0 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f0e5cbb09ad2be8ac852e6ea1e095ba7ce740856
|
4
|
+
data.tar.gz: 73494a90e0379e760c2e853bc4698e8f9159841d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d90141814628009a088cd1ea9d18232a187a760fadf4a8f8a5feaf9ea76ac1e4bab145e981b8ae718f815f9e01bd49d577f6d523d0426d307287727c96cfa052
|
7
|
+
data.tar.gz: e02820ebe2dc60906dd5d4beea648d2609274df1e56a7fbaa7e240e147ff2370617bd5a296d6f52febd2a0ec87d464126c71316dfffd12d771ec82deb80611fd
|
data/.gitignore
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
/tmp/*
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ipgeobase
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0-p247
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ipgeobase_mongoid (1.0.0)
|
5
|
+
mongoid (>= 3.0, < 5.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activemodel (3.2.14)
|
11
|
+
activesupport (= 3.2.14)
|
12
|
+
builder (~> 3.0.0)
|
13
|
+
activesupport (3.2.14)
|
14
|
+
i18n (~> 0.6, >= 0.6.4)
|
15
|
+
multi_json (~> 1.0)
|
16
|
+
builder (3.0.4)
|
17
|
+
diff-lcs (1.2.4)
|
18
|
+
i18n (0.6.5)
|
19
|
+
mongoid (3.1.4)
|
20
|
+
activemodel (~> 3.2)
|
21
|
+
moped (~> 1.4)
|
22
|
+
origin (~> 1.0)
|
23
|
+
tzinfo (~> 0.3.22)
|
24
|
+
moped (1.5.1)
|
25
|
+
multi_json (1.7.9)
|
26
|
+
origin (1.1.0)
|
27
|
+
rspec (2.14.1)
|
28
|
+
rspec-core (~> 2.14.0)
|
29
|
+
rspec-expectations (~> 2.14.0)
|
30
|
+
rspec-mocks (~> 2.14.0)
|
31
|
+
rspec-core (2.14.5)
|
32
|
+
rspec-expectations (2.14.1)
|
33
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
34
|
+
rspec-mocks (2.14.3)
|
35
|
+
tzinfo (0.3.37)
|
36
|
+
|
37
|
+
PLATFORMS
|
38
|
+
ruby
|
39
|
+
|
40
|
+
DEPENDENCIES
|
41
|
+
bundler (>= 1.0.21)
|
42
|
+
ipgeobase_mongoid!
|
43
|
+
rspec (>= 2.14.0)
|
data/README.rdoc
CHANGED
@@ -1,38 +1,48 @@
|
|
1
1
|
= IPGeoBase
|
2
2
|
|
3
|
-
Russia and Ukraine geoip lookup with DB from http://ipgeobase.ru for Mongoid
|
4
|
-
|
3
|
+
Russia and Ukraine geoip lookup with DB from http://ipgeobase.ru for Mongoid 3/4
|
4
|
+
|
5
|
+
WARNING: 1.0 breaks backward compatibility. For mongoid 2 use ~> 0
|
6
|
+
|
7
|
+
Гем для работы с архивом с сайта http://ipgeobase.ru, содержащим базу местонахождений российских и украинских ip-адресов (с точностью до города) для MongoDB (Mongoid 3/4).
|
5
8
|
|
6
9
|
== Installation
|
7
10
|
|
8
11
|
(1) Add to Gemfile:
|
9
|
-
gem "ipgeobase_mongoid"
|
12
|
+
gem "ipgeobase_mongoid"
|
10
13
|
(2) Install required gems:
|
11
14
|
bundle install
|
12
15
|
|
13
16
|
== Upload new database
|
14
17
|
|
15
18
|
* Update cities and regions. Downloads file if it's not present in tmp/cities.txt
|
16
|
-
|
19
|
+
* city id's are not changed on DB update and can be used as foreign keys
|
20
|
+
|
21
|
+
rake ipgeobase:cities
|
17
22
|
|
18
23
|
* Update geo ips. Downloads file if it's not present in tmp/cidr_optim.txt
|
19
|
-
|
24
|
+
|
25
|
+
rake ipgeobase:ips
|
20
26
|
|
21
27
|
== Methods
|
22
28
|
|
23
|
-
|
29
|
+
Search for city by IP (Russia and Ukraine only):
|
24
30
|
|
31
|
+
После того, как выполнены все предыдущие шаги можно искать город по IP адресу:
|
25
32
|
Работает только для РФ и Украины.
|
26
33
|
|
27
|
-
> Ipgeobase::find_region_by_ip('95.170.177.170')
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
> geo = Ipgeobase::find_region_by_ip('95.170.177.170')
|
35
|
+
> pp geo
|
36
|
+
=> #<Ipgeobase::City _id: 5059d68ee779891c72000201, _type: nil, geo_id: 1428, city: "Красноярск",
|
37
|
+
region: "Красноярский край", district: "Сибирский федеральный округ", lat: 56.001251, lon: 92.88559,
|
38
|
+
country_id: BSON::ObjectId('5059d68de779891c72000001')>
|
39
|
+
> geo.city
|
40
|
+
=> "Красноярск"
|
41
|
+
> geo.region
|
42
|
+
=> "Красноярский край"
|
43
|
+
> geo.district
|
44
|
+
=> "Сибирский федеральный округ"
|
45
|
+
> geo.country.name
|
46
|
+
=> "Россия"
|
47
|
+
> geo.country.code
|
48
|
+
=> "RU"
|
data/Rakefile
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module Ipgeobase
|
3
|
+
class City
|
4
|
+
include Mongoid::Document
|
5
|
+
|
6
|
+
field :geo_id, type: Integer
|
7
|
+
index({geo_id: 1}, {unique: true})
|
8
|
+
|
9
|
+
field :city, type: String
|
10
|
+
field :region, type: String
|
11
|
+
field :district, type: String
|
12
|
+
|
13
|
+
field :lat, type: Float
|
14
|
+
field :lon, type: Float
|
15
|
+
|
16
|
+
belongs_to :country, class_name: 'Ipgeobase::Country'
|
17
|
+
has_many :ips, class_name: 'Ipgeobase::Ip'
|
18
|
+
|
19
|
+
validates_presence_of :city, :country, :geo_id
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Ipgeobase
|
4
|
+
class Ip
|
5
|
+
include Mongoid::Document
|
6
|
+
|
7
|
+
field :start_ip, type: Integer
|
8
|
+
index({start_ip: 1}, {unique: true})
|
9
|
+
field :end_ip, type: Integer
|
10
|
+
|
11
|
+
belongs_to :city, class_name: 'Ipgeobase::City'
|
12
|
+
validates_presence_of :start_ip, :end_ip, :city_id
|
13
|
+
end
|
14
|
+
end
|
data/ipgeobase_mongoid.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.authors = ["GlebTv"]
|
10
10
|
s.email = ["glebtv@gmail.com"]
|
11
11
|
s.homepage = "https://github.com/rs-pro/ipgeobase_mongoid"
|
12
|
-
s.description = "IPGeoBase.ru for mongoid
|
13
|
-
s.summary = "IPGeoBase.ru for mongoid
|
12
|
+
s.description = "IPGeoBase.ru for mongoid 3/4"
|
13
|
+
s.summary = "IPGeoBase.ru for mongoid 3/4"
|
14
14
|
|
15
15
|
s.rubyforge_project = "ipgeobase_mongoid"
|
16
16
|
|
@@ -19,6 +19,9 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.
|
22
|
+
s.add_runtime_dependency('mongoid', [">= 3.0", "< 5.0"])
|
23
23
|
s.required_ruby_version = '>= 1.9.2'
|
24
|
+
|
25
|
+
s.add_development_dependency(%q<rspec>, [">= 2.14.0"])
|
26
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.21"])
|
24
27
|
end
|
data/lib/ipgeobase.rb
CHANGED
@@ -1,35 +1,30 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
require "ipgeobase/version"
|
4
|
+
require 'ipaddr'
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
6
|
+
if defined? Rails::Engine
|
7
|
+
require 'ipgeobase/engine'
|
8
|
+
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
10
|
+
if defined? Rails::Railtie
|
11
|
+
require 'ipgeobase/railtie'
|
12
|
+
end
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
14
|
+
module Ipgeobase
|
15
|
+
class << self
|
16
|
+
def find_region_by_ip(user_ip)
|
17
|
+
long = ip2long(user_ip)
|
18
|
+
ip = Ipgeobase::Ip.where(start_ip: { '$lte' => long }).order_by({ start_ip: -1 }).limit(1).first
|
19
|
+
if ip.nil? or ip.end_ip < long
|
20
|
+
nil
|
21
|
+
else
|
22
|
+
ip.city
|
23
|
+
end
|
25
24
|
end
|
26
|
-
end
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
ip.split(/\./).reverse.each_with_index do |b, i|
|
31
|
-
long += b.to_i << (8*i)
|
26
|
+
def ip2long(ip)
|
27
|
+
IPAddr.new(ip, Socket::AF_INET).to_i
|
32
28
|
end
|
33
|
-
long
|
34
29
|
end
|
35
30
|
end
|
data/lib/ipgeobase/task.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
module Ipgeobase
|
4
|
-
module Task
|
5
|
-
def self.obtain_content_by_filename(filename)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Ipgeobase
|
4
|
+
module Task
|
5
|
+
def self.obtain_content_by_filename(filename)
|
6
|
+
if defined? Rails
|
7
|
+
file = ::Rails.root.join('tmp', filename)
|
8
|
+
else
|
9
|
+
file = File.join(File.dirname(__FILE__), '..', '..', 'tmp', filename)
|
10
|
+
end
|
11
|
+
unless File.exist? file
|
12
|
+
puts 'downloading database'
|
13
|
+
url = 'http://ipgeobase.ru/files/db/Main/geo_files.tar.gz'
|
14
|
+
Kernel.system("curl #{url} | tar -xzOf - #{filename} | iconv -f cp1251 -t utf-8 > #{file}")
|
15
|
+
end
|
16
|
+
File.read(file)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -5,10 +5,9 @@ require "ipgeobase/task"
|
|
5
5
|
namespace :ipgeobase do
|
6
6
|
desc "Update cities and regions. Downloads file if it's not present in tmp/cities.txt"
|
7
7
|
task :cities => :environment do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
ukraine = IpgeobaseCountry.find_or_create_by(name: 'Украина', code: 'UA')
|
8
|
+
puts 'updating cities'
|
9
|
+
russia = Ipgeobase::Country.find_or_create_by(name: 'Россия', code: 'RU')
|
10
|
+
ukraine = Ipgeobase::Country.find_or_create_by(name: 'Украина', code: 'UA')
|
12
11
|
content = Ipgeobase::Task.obtain_content_by_filename('cities.txt')
|
13
12
|
content.each_line do |c|
|
14
13
|
options = c.split("\t")
|
@@ -17,24 +16,27 @@ namespace :ipgeobase do
|
|
17
16
|
else
|
18
17
|
russia
|
19
18
|
end
|
20
|
-
|
19
|
+
city = Ipgeobase::City.find_or_initialize_by(geo_id: options[0])
|
20
|
+
city.assign_attributes(city: options[1], region: options[2], district: options[3], lat: options[4], lon: options[5], country: country)
|
21
|
+
city.save!
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
25
|
desc "Update geo ips. Downloads file if it's not present in tmp/cidr_optim.txt"
|
25
26
|
task :ips => :environment do
|
27
|
+
puts 'updating ips'
|
26
28
|
content = Ipgeobase::Task.obtain_content_by_filename('cidr_optim.txt')
|
27
|
-
|
29
|
+
Ipgeobase::Ip.delete_all
|
28
30
|
content.each_line do |c|
|
29
31
|
options = c.split("\t")
|
30
32
|
next if options.last.to_i.zero?
|
31
|
-
city =
|
33
|
+
city = Ipgeobase::City.where(geo_id: options.last.strip.to_i).first
|
32
34
|
if city.nil?
|
33
35
|
p "No city"
|
34
36
|
p options
|
35
37
|
next
|
36
38
|
end
|
37
|
-
|
39
|
+
Ipgeobase::Ip.create(:start_ip => options.first.to_i, :end_ip => options.second.to_i, city_id: city.id)
|
38
40
|
end
|
39
41
|
end
|
40
42
|
end
|
data/lib/ipgeobase/version.rb
CHANGED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
|
+
|
6
|
+
require 'rspec'
|
7
|
+
require 'mongoid'
|
8
|
+
require 'ipgeobase'
|
9
|
+
|
10
|
+
|
11
|
+
# Requires supporting files with custom matchers and macros, etc,
|
12
|
+
# in ./support/ and its subdirectories.
|
13
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
14
|
+
|
15
|
+
Mongoid.configure do |config|
|
16
|
+
ENV["MONGOID_ENV"] = "test"
|
17
|
+
Mongoid.load!("spec/support/mongoid.yml")
|
18
|
+
end
|
19
|
+
|
20
|
+
require File.dirname(__FILE__) + '/../app/models/ipgeobase/city.rb'
|
21
|
+
require File.dirname(__FILE__) + '/../app/models/ipgeobase/country.rb'
|
22
|
+
require File.dirname(__FILE__) + '/../app/models/ipgeobase/ip.rb'
|
23
|
+
|
24
|
+
Ipgeobase::City.create_indexes
|
25
|
+
Ipgeobase::Ip.create_indexes
|
26
|
+
|
27
|
+
require 'rake'
|
28
|
+
app = Rake.application
|
29
|
+
app.init
|
30
|
+
# do this as many times as needed
|
31
|
+
# app.add_import 'lib/ipgeobase/tasks.rake'
|
32
|
+
# this loads the Rakefile and other imports
|
33
|
+
app.load_rakefile
|
34
|
+
app["ipgeobase:cities"].execute
|
35
|
+
moscow_id1 = Ipgeobase::City.where(city: 'Москва').first.id
|
36
|
+
|
37
|
+
app["ipgeobase:cities"].execute
|
38
|
+
moscow_id2 = Ipgeobase::City.where(city: 'Москва').first.id
|
39
|
+
# check that city ids are not changed on reimport
|
40
|
+
raise 'city id changed' if moscow_id1 != moscow_id2
|
41
|
+
|
42
|
+
app["ipgeobase:ips"].execute
|
43
|
+
|
44
|
+
RSpec.configure do |config|
|
45
|
+
config.mock_with :rspec
|
46
|
+
end
|
metadata
CHANGED
@@ -1,33 +1,64 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipgeobase_mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- GlebTv
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-08-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: mongoid
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '3.0'
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.0'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rspec
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 2.14.0
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.14.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: bundler
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.0.21
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - '>='
|
28
59
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
description: IPGeoBase.ru for mongoid
|
60
|
+
version: 1.0.21
|
61
|
+
description: IPGeoBase.ru for mongoid 3/4
|
31
62
|
email:
|
32
63
|
- glebtv@gmail.com
|
33
64
|
executables: []
|
@@ -35,39 +66,51 @@ extensions: []
|
|
35
66
|
extra_rdoc_files: []
|
36
67
|
files:
|
37
68
|
- .gitignore
|
69
|
+
- .ruby-gemset
|
70
|
+
- .ruby-version
|
38
71
|
- Gemfile
|
72
|
+
- Gemfile.lock
|
39
73
|
- README.rdoc
|
40
74
|
- Rakefile
|
41
|
-
- app/models/
|
42
|
-
- app/models/
|
43
|
-
- app/models/
|
75
|
+
- app/models/ipgeobase/city.rb
|
76
|
+
- app/models/ipgeobase/country.rb
|
77
|
+
- app/models/ipgeobase/ip.rb
|
44
78
|
- ipgeobase_mongoid.gemspec
|
45
79
|
- lib/ipgeobase.rb
|
80
|
+
- lib/ipgeobase/engine.rb
|
81
|
+
- lib/ipgeobase/railtie.rb
|
46
82
|
- lib/ipgeobase/task.rb
|
83
|
+
- lib/ipgeobase/tasks.rake
|
47
84
|
- lib/ipgeobase/version.rb
|
48
|
-
- lib/
|
85
|
+
- lib/ipgeobase_mongoid.rb
|
86
|
+
- spec/ipgeobase_spec.rb
|
87
|
+
- spec/spec_helper.rb
|
88
|
+
- spec/support/mongoid.yml
|
89
|
+
- tmp/.gitkeep
|
49
90
|
homepage: https://github.com/rs-pro/ipgeobase_mongoid
|
50
91
|
licenses: []
|
92
|
+
metadata: {}
|
51
93
|
post_install_message:
|
52
94
|
rdoc_options: []
|
53
95
|
require_paths:
|
54
96
|
- lib
|
55
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
98
|
requirements:
|
58
|
-
- -
|
99
|
+
- - '>='
|
59
100
|
- !ruby/object:Gem::Version
|
60
101
|
version: 1.9.2
|
61
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
103
|
requirements:
|
64
|
-
- -
|
104
|
+
- - '>='
|
65
105
|
- !ruby/object:Gem::Version
|
66
106
|
version: '0'
|
67
107
|
requirements: []
|
68
108
|
rubyforge_project: ipgeobase_mongoid
|
69
|
-
rubygems_version:
|
109
|
+
rubygems_version: 2.0.6
|
70
110
|
signing_key:
|
71
|
-
specification_version:
|
72
|
-
summary: IPGeoBase.ru for mongoid
|
73
|
-
test_files:
|
111
|
+
specification_version: 4
|
112
|
+
summary: IPGeoBase.ru for mongoid 3/4
|
113
|
+
test_files:
|
114
|
+
- spec/ipgeobase_spec.rb
|
115
|
+
- spec/spec_helper.rb
|
116
|
+
- spec/support/mongoid.yml
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
class IpgeobaseCity
|
4
|
-
include Mongoid::Document
|
5
|
-
|
6
|
-
field :geo_id, type: Integer
|
7
|
-
index :geo_id
|
8
|
-
|
9
|
-
field :city, type: String
|
10
|
-
field :region, type: String
|
11
|
-
field :district, type: String
|
12
|
-
|
13
|
-
field :lat, type: Float
|
14
|
-
field :lon, type: Float
|
15
|
-
|
16
|
-
|
17
|
-
belongs_to :country, class_name: 'IpgeobaseCountry'
|
18
|
-
has_many :ips, class_name: 'IpgeobaseIp'
|
19
|
-
|
20
|
-
validates_presence_of :city, :country, :geo_id
|
21
|
-
end
|
data/app/models/ipgeobase_ip.rb
DELETED