session_tracker 0.0.1 → 0.0.5

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1c480cf71c5562f63dfe48952dfa162642a932814b64d6662e6e280a6f3307aa
4
+ data.tar.gz: 40f1e2363a5ca2fd85b02f97e74d538cd91a56226990e2fe96c03b7c4c5ce12d
5
+ SHA512:
6
+ metadata.gz: adefd6065a1a1be8e2abc963fce83f1a0ec9b917c964d9e1cb0bab8707ec85157dc03ec38593e90c536d63dbd78c07041950f0ebcc7c4b8169e289d246ecc067
7
+ data.tar.gz: a0a2757a7ffd6979efa65d882dca5c99221891738ab7588881a90abc8974213b4b4d7dd11ea03e41cca186aa64804e30cd0f18dcf31caaae21afd58d38689f71
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SessionTracker
2
2
 
3
- Track active sessions in redis.
3
+ Track active users sessions in redis.
4
4
 
5
5
  ## Installation
6
6
 
@@ -32,6 +32,8 @@ Then to view the current state:
32
32
 
33
33
  If redis is accessible through $redis, you don't have to give it as an argument to SessionTracker.new.
34
34
 
35
+ Read the spec and/or code to see how it works.
36
+
35
37
  ## Contributing
36
38
 
37
39
  1. Fork it
@@ -1,3 +1,3 @@
1
1
  class SessionTracker
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -18,14 +18,18 @@ class SessionTracker
18
18
  # so we don't want to raise errors just because redis is down for a few seconds.
19
19
  end
20
20
 
21
- def active_users(time = Time.now)
22
- @redis.sunion(*keys_for_last_3_minutes(time)).size
21
+ def active_users_data(timespan_in_minutes, time)
22
+ @redis.sunion(*keys_within(timespan_in_minutes, time))
23
+ end
24
+
25
+ def active_users(timespan_in_minutes = 5, time = Time.now)
26
+ active_users_data(timespan_in_minutes, time).size
23
27
  end
24
28
 
25
29
  private
26
30
 
27
- def keys_for_last_3_minutes(time)
28
- times = 0.upto(2).map { |n| time - (n * 60) }
31
+ def keys_within(minutes, time)
32
+ times = 0.upto(minutes - 1).map { |n| time - (n * 60) }
29
33
  times.map { |t| key_for(t) }
30
34
  end
31
35
 
@@ -8,6 +8,7 @@ Gem::Specification.new do |gem|
8
8
  gem.description = %q{Track active user sessions in redis}
9
9
  gem.summary = %q{Track active user sessions in redis}
10
10
  gem.homepage = ""
11
+ gem.metadata = { "rubygems_mfa_required" => "true" }
11
12
 
12
13
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
13
14
  gem.files = `git ls-files`.split("\n")
@@ -44,14 +44,26 @@ describe SessionTracker, "active_users" do
44
44
 
45
45
  let(:redis) { mock.as_null_object }
46
46
 
47
- it "should do a union on the last 3 minutes to get a active user count" do
47
+ it "should do a union on the specified timespan to get a active user count" do
48
48
  time = Time.parse("13:09")
49
49
  redis.should_receive(:sunion).with("active_customer_sessions_minute_09",
50
50
  "active_customer_sessions_minute_08",
51
51
  "active_customer_sessions_minute_07").
52
52
  and_return([ mock, mock ])
53
53
 
54
- SessionTracker.new("customer", redis).active_users(time).should == 2
54
+ SessionTracker.new("customer", redis).active_users(3, time).should == 2
55
+ end
56
+
57
+ it "should use a default time span of 5 minutes" do
58
+ redis.should_receive(:sunion).with(anything, anything, anything,
59
+ anything, anything).and_return([ mock, mock ])
60
+
61
+ SessionTracker.new("customer", redis).active_users.should == 2
62
+ end
63
+
64
+ it "should be possible to access the data" do
65
+ redis.should_receive(:sunion).and_return([ :d1, :d2 ])
66
+ SessionTracker.new("customer", redis).active_users_data(3, Time.now).should == [ :d1, :d2 ]
55
67
  end
56
68
 
57
69
  end
metadata CHANGED
@@ -1,60 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: session_tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Joakim Kolsjö
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-02-11 00:00:00.000000000 Z
11
+ date: 2021-11-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
- requirement: &2152640440 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *2152640440
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: rspec
27
- requirement: &2152639960 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *2152639960
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: guard
38
- requirement: &2152639540 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *2152639540
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: guard-rspec
49
- requirement: &2152639080 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - ">="
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *2152639080
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  description: Track active user sessions in redis
59
70
  email:
60
71
  - joakim.kolsjo@gmail.com
@@ -62,8 +73,8 @@ executables: []
62
73
  extensions: []
63
74
  extra_rdoc_files: []
64
75
  files:
65
- - .gitignore
66
- - .rvmrc
76
+ - ".gitignore"
77
+ - ".rvmrc"
67
78
  - Gemfile
68
79
  - Guardfile
69
80
  - README.md
@@ -74,27 +85,25 @@ files:
74
85
  - spec/session_tracker_spec.rb
75
86
  homepage: ''
76
87
  licenses: []
88
+ metadata:
89
+ rubygems_mfa_required: 'true'
77
90
  post_install_message:
78
91
  rdoc_options: []
79
92
  require_paths:
80
93
  - lib
81
94
  required_ruby_version: !ruby/object:Gem::Requirement
82
- none: false
83
95
  requirements:
84
- - - ! '>='
96
+ - - ">="
85
97
  - !ruby/object:Gem::Version
86
98
  version: '0'
87
99
  required_rubygems_version: !ruby/object:Gem::Requirement
88
- none: false
89
100
  requirements:
90
- - - ! '>='
101
+ - - ">="
91
102
  - !ruby/object:Gem::Version
92
103
  version: '0'
93
104
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 1.8.5
105
+ rubygems_version: 3.2.31
96
106
  signing_key:
97
- specification_version: 3
107
+ specification_version: 4
98
108
  summary: Track active user sessions in redis
99
- test_files:
100
- - spec/session_tracker_spec.rb
109
+ test_files: []