mongoid_traffic 0.2.0 → 0.2.1
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 +4 -4
- data/.travis.yml +3 -2
- data/Gemfile +1 -5
- data/Gemfile.lock +58 -53
- data/lib/mongoid_traffic/controller_additions.rb +6 -8
- data/lib/mongoid_traffic/log.rb +21 -25
- data/lib/mongoid_traffic/logger/bots.rb +8 -11
- data/lib/mongoid_traffic/logger/browser.rb +1 -5
- data/lib/mongoid_traffic/logger/geo_ip.rb +4 -6
- data/lib/mongoid_traffic/logger/referer.rb +2 -4
- data/lib/mongoid_traffic/logger.rb +15 -17
- data/lib/mongoid_traffic/version.rb +1 -1
- data/mongoid_traffic.gemspec +3 -3
- data/test/mongoid_traffic/controller_additions_test.rb +1 -3
- data/test/mongoid_traffic/log_test.rb +40 -43
- data/test/mongoid_traffic/logger/bots_test.rb +1 -3
- data/test/mongoid_traffic/logger/browser_test.rb +1 -3
- data/test/mongoid_traffic/logger/geoip_test.rb +1 -3
- data/test/mongoid_traffic/logger/referer_test.rb +1 -3
- data/test/mongoid_traffic/logger_test.rb +2 -3
- data/test/support/database_cleaner.rb +10 -0
- data/test/support/mongoid.rb +8 -0
- data/test/test_helper.rb +5 -12
- data/vendor/mongoid_traffic/GeoIP.dat +0 -0
- data/vendor/mongoid_traffic/allagents.xml +22134 -22170
- metadata +18 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48c3eb9a025f842258ed056e4ef1b435bc99c260
|
4
|
+
data.tar.gz: 78ccd5f6083cec8c081d217a0265e34c8abf3819
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da181545b24d5cfd258d21bc71c44f28cd9ffcf0a693c9abee7bb43811c83315492a11f77ddf5ce8ccbaf53b1084d4316141b137d3e144bed06f9ad60b2451a3
|
7
|
+
data.tar.gz: 815f3e65d468f5a271f2bb1190e0bd373513356770606441f4e303f5c48a6aa3851571bf5395971f9a5372c10089b150962d1c1a44b24366f5ac921dab5e058f
|
data/.travis.yml
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache: bundler
|
3
3
|
script: 'bundle exec rake'
|
4
|
+
sudo: false
|
4
5
|
rvm:
|
5
|
-
- 2.
|
6
|
+
- 2.2.2
|
6
7
|
services:
|
7
8
|
- mongodb
|
8
9
|
|
@@ -11,4 +12,4 @@ notifications:
|
|
11
12
|
recipients:
|
12
13
|
- tomas.celizna@gmail.com
|
13
14
|
on_failure: change
|
14
|
-
on_success: never
|
15
|
+
on_success: never
|
data/Gemfile
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
# Specify your gem's dependencies in mongoid_permalink_extension.gemspec
|
4
3
|
gemspec
|
5
4
|
|
6
|
-
|
7
|
-
group :test do
|
8
|
-
gem 'database_cleaner', git: 'https://github.com/DatabaseCleaner/database_cleaner.git'
|
9
|
-
end
|
5
|
+
gem 'database_cleaner', git: 'https://github.com/DatabaseCleaner/database_cleaner.git'
|
data/Gemfile.lock
CHANGED
@@ -1,103 +1,104 @@
|
|
1
1
|
GIT
|
2
2
|
remote: https://github.com/DatabaseCleaner/database_cleaner.git
|
3
|
-
revision:
|
3
|
+
revision: f318781a77228f5999f5f2371c12f59089c141f3
|
4
4
|
specs:
|
5
5
|
database_cleaner (1.5.1)
|
6
6
|
|
7
7
|
PATH
|
8
8
|
remote: .
|
9
9
|
specs:
|
10
|
-
mongoid_traffic (0.2.
|
10
|
+
mongoid_traffic (0.2.1)
|
11
11
|
geoip
|
12
|
-
mongoid (~> 5.
|
12
|
+
mongoid (~> 5.1)
|
13
13
|
nokogiri
|
14
|
-
useragent
|
14
|
+
useragent
|
15
15
|
|
16
16
|
GEM
|
17
17
|
remote: https://rubygems.org/
|
18
18
|
specs:
|
19
|
-
activemodel (4.2.
|
20
|
-
activesupport (= 4.2.
|
19
|
+
activemodel (4.2.6)
|
20
|
+
activesupport (= 4.2.6)
|
21
21
|
builder (~> 3.1)
|
22
|
-
activesupport (4.2.
|
22
|
+
activesupport (4.2.6)
|
23
23
|
i18n (~> 0.7)
|
24
24
|
json (~> 1.7, >= 1.7.7)
|
25
25
|
minitest (~> 5.1)
|
26
26
|
thread_safe (~> 0.3, >= 0.3.4)
|
27
27
|
tzinfo (~> 1.1)
|
28
|
-
bson (
|
28
|
+
bson (4.0.4)
|
29
29
|
builder (3.2.2)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
term-ansicolor
|
38
|
-
thor
|
30
|
+
coderay (1.1.1)
|
31
|
+
coveralls (0.8.13)
|
32
|
+
json (~> 1.8)
|
33
|
+
simplecov (~> 0.11.0)
|
34
|
+
term-ansicolor (~> 1.3)
|
35
|
+
thor (~> 0.19.1)
|
36
|
+
tins (~> 1.6.0)
|
39
37
|
docile (1.1.5)
|
40
|
-
ffi (1.9.
|
38
|
+
ffi (1.9.10)
|
41
39
|
formatador (0.2.5)
|
42
40
|
geoip (1.6.1)
|
43
|
-
guard (2.
|
41
|
+
guard (2.13.0)
|
44
42
|
formatador (>= 0.2.4)
|
45
|
-
listen (
|
43
|
+
listen (>= 2.7, <= 4.0)
|
46
44
|
lumberjack (~> 1.0)
|
45
|
+
nenv (~> 0.1)
|
46
|
+
notiffany (~> 0.0)
|
47
47
|
pry (>= 0.9.12)
|
48
|
+
shellany (~> 0.0)
|
48
49
|
thor (>= 0.18.1)
|
49
|
-
guard-
|
50
|
-
|
50
|
+
guard-compat (1.2.1)
|
51
|
+
guard-minitest (2.4.4)
|
52
|
+
guard-compat (~> 1.2)
|
51
53
|
minitest (>= 3.0)
|
52
54
|
i18n (0.7.0)
|
53
55
|
json (1.8.3)
|
54
|
-
listen (
|
55
|
-
celluloid (>= 0.15.2)
|
56
|
+
listen (3.0.6)
|
56
57
|
rb-fsevent (>= 0.9.3)
|
57
|
-
rb-inotify (>= 0.9)
|
58
|
-
lumberjack (1.0.
|
58
|
+
rb-inotify (>= 0.9.7)
|
59
|
+
lumberjack (1.0.10)
|
59
60
|
method_source (0.8.2)
|
60
|
-
|
61
|
-
|
62
|
-
minitest (
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
mini_portile2 (2.0.0)
|
62
|
+
minitest (5.8.4)
|
63
|
+
minitest-around (0.3.2)
|
64
|
+
minitest (~> 5.0)
|
65
|
+
mongo (2.2.4)
|
66
|
+
bson (~> 4.0)
|
67
|
+
mongoid (5.1.1)
|
66
68
|
activemodel (~> 4.0)
|
67
69
|
mongo (~> 2.1)
|
68
|
-
origin (~> 2.
|
70
|
+
origin (~> 2.2)
|
69
71
|
tzinfo (>= 0.3.37)
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
72
|
+
nenv (0.3.0)
|
73
|
+
nokogiri (1.6.7.2)
|
74
|
+
mini_portile2 (~> 2.0.0.rc2)
|
75
|
+
notiffany (0.0.8)
|
76
|
+
nenv (~> 0.1)
|
77
|
+
shellany (~> 0.0)
|
78
|
+
origin (2.2.0)
|
79
|
+
pry (0.10.3)
|
76
80
|
coderay (~> 1.1.0)
|
77
81
|
method_source (~> 0.8.1)
|
78
82
|
slop (~> 3.4)
|
79
|
-
rake (
|
80
|
-
rb-fsevent (0.9.
|
81
|
-
rb-inotify (0.9.
|
83
|
+
rake (11.1.1)
|
84
|
+
rb-fsevent (0.9.7)
|
85
|
+
rb-inotify (0.9.7)
|
82
86
|
ffi (>= 0.5.0)
|
83
|
-
|
84
|
-
|
85
|
-
netrc (~> 0.7)
|
86
|
-
simplecov (0.9.0)
|
87
|
+
shellany (0.0.1)
|
88
|
+
simplecov (0.11.2)
|
87
89
|
docile (~> 1.1.0)
|
88
|
-
|
89
|
-
simplecov-html (~> 0.
|
90
|
-
simplecov-html (0.
|
90
|
+
json (~> 1.8)
|
91
|
+
simplecov-html (~> 0.10.0)
|
92
|
+
simplecov-html (0.10.0)
|
91
93
|
slop (3.6.0)
|
92
|
-
term-ansicolor (1.3.
|
94
|
+
term-ansicolor (1.3.2)
|
93
95
|
tins (~> 1.0)
|
94
96
|
thor (0.19.1)
|
95
97
|
thread_safe (0.3.5)
|
96
|
-
|
97
|
-
tins (1.3.1)
|
98
|
+
tins (1.6.0)
|
98
99
|
tzinfo (1.2.2)
|
99
100
|
thread_safe (~> 0.1)
|
100
|
-
useragent (0.
|
101
|
+
useragent (0.16.5)
|
101
102
|
|
102
103
|
PLATFORMS
|
103
104
|
ruby
|
@@ -109,5 +110,9 @@ DEPENDENCIES
|
|
109
110
|
guard
|
110
111
|
guard-minitest
|
111
112
|
minitest
|
113
|
+
minitest-around
|
112
114
|
mongoid_traffic!
|
113
115
|
rake
|
116
|
+
|
117
|
+
BUNDLED WITH
|
118
|
+
1.11.2
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module MongoidTraffic
|
2
2
|
module ControllerAdditions
|
3
|
-
|
4
|
-
def log_traffic log_cls, scope: nil
|
3
|
+
def log_traffic(log_cls, scope: nil)
|
5
4
|
MongoidTraffic::Logger.log(
|
6
5
|
log_cls,
|
7
6
|
ip_address: request.remote_ip,
|
@@ -10,19 +9,18 @@ module MongoidTraffic
|
|
10
9
|
user_agent: request.headers['User-Agent']
|
11
10
|
)
|
12
11
|
end
|
13
|
-
|
14
|
-
def log_scoped_traffic
|
12
|
+
|
13
|
+
def log_scoped_traffic(_log_cls, scope: nil)
|
15
14
|
log_traffic(scope: (scope || request.fullpath.split('?').first))
|
16
15
|
end
|
17
16
|
|
18
17
|
# ---------------------------------------------------------------------
|
19
|
-
|
20
|
-
def self.included
|
18
|
+
|
19
|
+
def self.included(base)
|
21
20
|
base.extend ClassMethods
|
22
21
|
base.helper_method :log_traffic
|
23
22
|
base.helper_method :log_scoped_traffic
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
27
25
|
end
|
28
26
|
|
@@ -30,4 +28,4 @@ if defined? ActionController::Base
|
|
30
28
|
ActionController::Base.class_eval do
|
31
29
|
include MongoidTraffic::ControllerAdditions
|
32
30
|
end
|
33
|
-
end
|
31
|
+
end
|
data/lib/mongoid_traffic/log.rb
CHANGED
@@ -2,8 +2,7 @@ require 'logger'
|
|
2
2
|
|
3
3
|
module MongoidTraffic
|
4
4
|
module Log
|
5
|
-
|
6
|
-
def self.included base
|
5
|
+
def self.included(base)
|
7
6
|
base.extend ClassMethods
|
8
7
|
base.class_eval do
|
9
8
|
field :s, as: :scope, type: String
|
@@ -31,36 +30,36 @@ module MongoidTraffic
|
|
31
30
|
|
32
31
|
default_scope -> { where(scope: nil) }
|
33
32
|
|
34
|
-
scope :for_dates, -> date_from, date_to { where(date_from: date_from, date_to: date_to) }
|
33
|
+
scope :for_dates, -> (date_from, date_to) { where(date_from: date_from, date_to: date_to) }
|
35
34
|
|
36
|
-
scope :yearly, -> year {
|
37
|
-
scope :monthly, -> month, year {
|
38
|
-
scope :weekly, -> week, year {
|
39
|
-
scope :daily, -> date {
|
35
|
+
scope :yearly, -> (year) { for_dates(Date.parse("01/01/#{year}"), Date.parse("01/01/#{year}").at_end_of_year) }
|
36
|
+
scope :monthly, -> (month, year) { for_dates(Date.parse("01/#{month}/#{year}"), Date.parse("01/#{month}/#{year}").at_end_of_month) }
|
37
|
+
scope :weekly, -> (week, year) { for_dates(Date.commercial(year, week), Date.commercial(year, week).at_end_of_week) }
|
38
|
+
scope :daily, -> (date) { for_dates(date, date) }
|
40
39
|
|
41
|
-
scope :scoped_to, -> scope { where(scope: scope) }
|
40
|
+
scope :scoped_to, -> (scope) { where(scope: scope) }
|
42
41
|
|
43
42
|
# ---------------------------------------------------------------------
|
44
43
|
|
45
|
-
index(
|
44
|
+
index(scope: 1, date_from: 1, date_to: 1)
|
46
45
|
end
|
47
46
|
end
|
48
47
|
|
49
48
|
# =====================================================================
|
50
49
|
|
51
50
|
module ClassMethods
|
52
|
-
def log
|
51
|
+
def log(*args)
|
53
52
|
MongoidTraffic::Logger.log(self, *args)
|
54
53
|
end
|
55
54
|
|
56
|
-
def aggregate_on
|
55
|
+
def aggregate_on(att)
|
57
56
|
case find_field_by_name(att).type.to_s
|
58
57
|
when 'Integer' then sum(att)
|
59
58
|
when 'Hash' then sum_hash(att)
|
60
59
|
end
|
61
60
|
end
|
62
61
|
|
63
|
-
def sum
|
62
|
+
def sum(att)
|
64
63
|
if att.to_sym == :unique_ids
|
65
64
|
aggregate_on(:unique_ids).keys.count
|
66
65
|
else
|
@@ -68,26 +67,23 @@ module MongoidTraffic
|
|
68
67
|
end
|
69
68
|
end
|
70
69
|
|
71
|
-
def find_field_by_name
|
72
|
-
return unless f = fields.detect{ |k,v| k == field_name.to_s
|
70
|
+
def find_field_by_name(field_name)
|
71
|
+
return unless f = fields.detect { |k, v| k == field_name.to_s || v.options[:as].to_s == field_name.to_s }
|
73
72
|
f.last
|
74
73
|
end
|
75
74
|
|
76
|
-
def sum_hash
|
77
|
-
|
78
|
-
merger = proc
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
else
|
84
|
-
v1.to_i + v2.to_i
|
75
|
+
def sum_hash(field_name)
|
76
|
+
pluck(field_name).inject({}) do |res, h|
|
77
|
+
merger = proc do |_key, v1, v2|
|
78
|
+
case
|
79
|
+
when Hash === v1 && Hash === v2 then v1.merge(v2, &merger)
|
80
|
+
when Hash === v2 then v2
|
81
|
+
else v1.to_i + v2.to_i
|
85
82
|
end
|
86
|
-
|
83
|
+
end
|
87
84
|
res = res.merge(h, &merger)
|
88
85
|
end
|
89
86
|
end
|
90
87
|
end
|
91
|
-
|
92
88
|
end
|
93
89
|
end
|
@@ -5,30 +5,27 @@ require 'nokogiri'
|
|
5
5
|
module MongoidTraffic
|
6
6
|
class Logger
|
7
7
|
class Bots
|
8
|
+
DATA_URL = 'http://www.user-agents.org/allagents.xml'.freeze
|
9
|
+
FILE_PATH = 'vendor/mongoid_traffic/allagents.xml'.freeze
|
8
10
|
|
9
|
-
DATA_URL = "http://www.user-agents.org/allagents.xml"
|
10
|
-
FILE_PATH = "vendor/mongoid_traffic/allagents.xml"
|
11
|
-
|
12
11
|
class << self
|
13
12
|
def list
|
14
13
|
@list ||= begin
|
15
14
|
response = File.open(FILE_PATH).read
|
16
15
|
doc = Nokogiri::XML(response)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
doc.xpath('//user-agent').inject([]) do |res, agent|
|
17
|
+
type = agent.xpath('Type').text
|
18
|
+
res << agent.xpath('String').text.gsub('<', '<') if %w(R S).include?(type)
|
19
|
+
res
|
21
20
|
end
|
22
|
-
list
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
26
|
-
def is_a_bot?
|
24
|
+
def is_a_bot?(referer)
|
27
25
|
return false unless referer.present?
|
28
26
|
list.include?(referer)
|
29
27
|
end
|
30
28
|
end
|
31
|
-
|
32
29
|
end
|
33
30
|
end
|
34
|
-
end
|
31
|
+
end
|
@@ -3,13 +3,10 @@ require 'user_agent'
|
|
3
3
|
module MongoidTraffic
|
4
4
|
class Logger
|
5
5
|
class Browser
|
6
|
-
|
7
|
-
def initialize user_agent_string
|
6
|
+
def initialize(user_agent_string)
|
8
7
|
@user_agent_string = user_agent_string
|
9
8
|
end
|
10
9
|
|
11
|
-
# ---------------------------------------------------------------------
|
12
|
-
|
13
10
|
def platform
|
14
11
|
user_agent.platform
|
15
12
|
end
|
@@ -27,7 +24,6 @@ module MongoidTraffic
|
|
27
24
|
def user_agent
|
28
25
|
@user_agent ||= ::UserAgent.parse(@user_agent_string)
|
29
26
|
end
|
30
|
-
|
31
27
|
end
|
32
28
|
end
|
33
29
|
end
|
@@ -3,20 +3,18 @@ require 'geoip'
|
|
3
3
|
module MongoidTraffic
|
4
4
|
class Logger
|
5
5
|
class GeoIp
|
6
|
-
|
7
|
-
|
8
|
-
FILE_URL = "vendor/mongoid_traffic/GeoIP.dat"
|
6
|
+
DATA_URL = 'http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz'.freeze
|
7
|
+
FILE_URL = 'vendor/mongoid_traffic/GeoIP.dat'.freeze
|
9
8
|
|
10
9
|
class << self
|
11
10
|
def geoip
|
12
11
|
@geoip ||= ::GeoIP.new(FILE_URL)
|
13
12
|
end
|
14
13
|
|
15
|
-
def country_code2
|
14
|
+
def country_code2(str)
|
16
15
|
geoip.country(str).country_code2
|
17
16
|
end
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
19
|
end
|
22
|
-
end
|
20
|
+
end
|
@@ -3,8 +3,7 @@ require 'uri'
|
|
3
3
|
module MongoidTraffic
|
4
4
|
class Logger
|
5
5
|
class Referer
|
6
|
-
|
7
|
-
def initialize referer_string
|
6
|
+
def initialize(referer_string)
|
8
7
|
@referer_string = referer_string
|
9
8
|
end
|
10
9
|
|
@@ -17,11 +16,10 @@ module MongoidTraffic
|
|
17
16
|
end
|
18
17
|
|
19
18
|
private # =============================================================
|
20
|
-
|
19
|
+
|
21
20
|
def uri
|
22
21
|
URI.parse(@referer_string)
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
26
24
|
end
|
27
25
|
end
|
@@ -9,18 +9,17 @@ require_relative './logger/referer'
|
|
9
9
|
|
10
10
|
module MongoidTraffic
|
11
11
|
class Logger
|
12
|
-
|
13
|
-
TIME_SCOPE_OPTIONS = %i(year month week day)
|
12
|
+
TIME_SCOPE_OPTIONS = %i(year month week day).freeze
|
14
13
|
|
15
14
|
# ---------------------------------------------------------------------
|
16
15
|
|
17
|
-
def self.log
|
16
|
+
def self.log(log_cls, *args)
|
18
17
|
new(log_cls, *args).log
|
19
18
|
end
|
20
19
|
|
21
20
|
# ---------------------------------------------------------------------
|
22
21
|
|
23
|
-
def initialize
|
22
|
+
def initialize(log_cls, ip_address: nil, referer: nil, scope: nil, time_scope: %i(month day), unique_id: nil, user_agent: nil)
|
24
23
|
@log_cls = log_cls
|
25
24
|
@ip_address = ip_address
|
26
25
|
@referer_string = referer
|
@@ -32,10 +31,10 @@ module MongoidTraffic
|
|
32
31
|
|
33
32
|
def log
|
34
33
|
return if Bots.is_a_bot?(@referer_string)
|
35
|
-
raise "Invalid time scope definition: #{@time_scope}" unless @time_scope.all?{ |ts| TIME_SCOPE_OPTIONS.include?(ts) }
|
34
|
+
raise "Invalid time scope definition: #{@time_scope}" unless @time_scope.all? { |ts| TIME_SCOPE_OPTIONS.include?(ts) }
|
36
35
|
|
37
36
|
@time_scope.each do |ts|
|
38
|
-
@log_cls.collection.find(
|
37
|
+
@log_cls.collection.find(find_query(ts)).update_many(upsert_query, upsert: true)
|
39
38
|
end
|
40
39
|
end
|
41
40
|
|
@@ -43,11 +42,11 @@ module MongoidTraffic
|
|
43
42
|
|
44
43
|
def upsert_query
|
45
44
|
{
|
46
|
-
'$inc' => access_count_query
|
47
|
-
merge(browser_query)
|
48
|
-
merge(country_query)
|
49
|
-
merge(referer_query)
|
50
|
-
merge(unique_id_query),
|
45
|
+
'$inc' => access_count_query
|
46
|
+
.merge(browser_query)
|
47
|
+
.merge(country_query)
|
48
|
+
.merge(referer_query)
|
49
|
+
.merge(unique_id_query),
|
51
50
|
'$set' => { uat: Time.now }
|
52
51
|
}
|
53
52
|
end
|
@@ -60,7 +59,7 @@ module MongoidTraffic
|
|
60
59
|
|
61
60
|
def browser_query
|
62
61
|
return {} unless browser.present?
|
63
|
-
browser_path = [browser.platform, browser.name, browser.version].map{ |s| escape_key(s) }.join('.')
|
62
|
+
browser_path = [browser.platform, browser.name, browser.version].map { |s| escape_key(s) }.join('.')
|
64
63
|
{ "b.#{browser_path}" => 1 }
|
65
64
|
end
|
66
65
|
|
@@ -85,13 +84,13 @@ module MongoidTraffic
|
|
85
84
|
|
86
85
|
# ---------------------------------------------------------------------
|
87
86
|
|
88
|
-
def escape_key
|
89
|
-
CGI
|
87
|
+
def escape_key(key)
|
88
|
+
CGI.escape(key).gsub('.', '%2E')
|
90
89
|
end
|
91
90
|
|
92
91
|
# ---------------------------------------------------------------------
|
93
92
|
|
94
|
-
def find_query
|
93
|
+
def find_query(ts)
|
95
94
|
res = time_query(ts)
|
96
95
|
res = res.merge(scope_query) if @scope.present?
|
97
96
|
res
|
@@ -101,7 +100,7 @@ module MongoidTraffic
|
|
101
100
|
{ s: @scope }
|
102
101
|
end
|
103
102
|
|
104
|
-
def time_query
|
103
|
+
def time_query(ts)
|
105
104
|
date = Date.today
|
106
105
|
case ts
|
107
106
|
when :day then { df: date, dt: date }
|
@@ -120,6 +119,5 @@ module MongoidTraffic
|
|
120
119
|
return unless @referer_string.present?
|
121
120
|
@referer ||= Referer.new(@referer_string)
|
122
121
|
end
|
123
|
-
|
124
122
|
end
|
125
123
|
end
|
data/mongoid_traffic.gemspec
CHANGED
@@ -19,15 +19,15 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "geoip"
|
22
|
-
spec.add_dependency "mongoid", "~> 5.
|
22
|
+
spec.add_dependency "mongoid", "~> 5.1"
|
23
23
|
spec.add_dependency "nokogiri"
|
24
|
-
spec.add_dependency "useragent"
|
24
|
+
spec.add_dependency "useragent"
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 1.3"
|
27
27
|
spec.add_development_dependency "coveralls"
|
28
|
-
spec.add_development_dependency "database_cleaner", ">= 1.5.1"
|
29
28
|
spec.add_development_dependency "guard"
|
30
29
|
spec.add_development_dependency "guard-minitest"
|
31
30
|
spec.add_development_dependency "minitest"
|
31
|
+
spec.add_development_dependency "minitest-around"
|
32
32
|
spec.add_development_dependency "rake"
|
33
33
|
end
|
@@ -4,11 +4,10 @@ require_relative '../../lib/mongoid_traffic/controller_additions'
|
|
4
4
|
|
5
5
|
module MongoidTraffic
|
6
6
|
describe 'ControllerAdditions' do
|
7
|
-
|
8
7
|
before(:each) do
|
9
8
|
@controller_class = Class.new
|
10
9
|
@controller = @controller_class.new
|
11
|
-
def @controller_class.helper_method(
|
10
|
+
def @controller_class.helper_method(_name); end
|
12
11
|
@controller_class.send(:include, MongoidTraffic::ControllerAdditions)
|
13
12
|
end
|
14
13
|
|
@@ -22,6 +21,5 @@ module MongoidTraffic
|
|
22
21
|
describe '.log_scoped_traffic' do
|
23
22
|
it 'infers scope from request path'
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
27
25
|
end
|