minuteman 2.0.0 → 3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d96820b756c302030f2a5758b0da28c5180158e0
4
- data.tar.gz: 202b4c5ad523ea3a95826b398ebb53ba11b7480c
2
+ SHA256:
3
+ metadata.gz: 06c04125f35ec867eacf2e102f8476d575c61a789d6be45ebd89dc2df9a7e5c4
4
+ data.tar.gz: 8d838dc119c07c2a08b5c85beb94183c065caf8e529c635a77a9e2e0d64142f3
5
5
  SHA512:
6
- metadata.gz: 0d673fb5af390e80cb753487785e3d63e2f5c9029761092079266e39aff090a14c21cbd935e7e6b13d98144dd15607dab22f805212757846bbbfbd214cd8778f
7
- data.tar.gz: ee9a2b9a6dee683c9798bbe097ffe113d0c5ecb47fa3a62997860a069cc896225c6f7faf55d54fea0941bbba721a8273defda5b0c7c77fd4adcd73b2b3c3b720
6
+ metadata.gz: e78b8dc6d545d7facd148a09bc4fabb79c19d6912f99ea5338139af7f43417806aa608446bd8419d7a55fb7e5e3976b6af3cb21cd49ca429fbb7f32393778722
7
+ data.tar.gz: 2d0bd6fc10941a9578fcb12e3b601512268b8b18fb1833a7fc15f9f6d2a865df6ae25e43b4c146f11aec2a7b3324fe19c5e0224a49d227ce82a11e708a1afb91
@@ -1,8 +1,11 @@
1
1
  language: ruby
2
- sudo: false
3
- install: bash <(curl -s https://raw.githubusercontent.com/elcuervo/rpm/master/bin/rpm-install)
2
+
4
3
  rvm:
5
- - "2.0.0"
6
- - "2.2.2"
4
+ - 2.1
5
+ - 2.2
6
+ - 2.3
7
+ - 2.4
8
+ - 2.5
9
+
7
10
  services:
8
- - "redis-server"
11
+ - redis-server
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rake"
4
+
5
+ gemspec
@@ -0,0 +1,37 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ minuteman (3.0.0)
5
+ nest (~> 3.1.2)
6
+ ohm (~> 3.1.1)
7
+ redic (~> 1.5.1)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ clap (1.0.0)
13
+ cutest (1.2.3)
14
+ clap
15
+ hiredis (0.6.3)
16
+ nest (3.1.2)
17
+ redic
18
+ ohm (3.1.1)
19
+ nest (~> 3)
20
+ redic (~> 1.5.0)
21
+ stal
22
+ rake (12.3.2)
23
+ redic (1.5.1)
24
+ hiredis
25
+ stal (0.3.0)
26
+ redic (~> 1.5)
27
+
28
+ PLATFORMS
29
+ ruby
30
+
31
+ DEPENDENCIES
32
+ cutest (~> 1.2.3)
33
+ minuteman!
34
+ rake
35
+
36
+ BUNDLED WITH
37
+ 1.17.2
data/README.md CHANGED
@@ -141,7 +141,7 @@ user.uid # => "787c8770-0ac2-4654-9fa4-e57d152fa341"
141
141
 
142
142
  # User lookup works like this:
143
143
  # And you can use that unique identifier as a key in a cookie to see what your
144
- # uses do when no one is looking
144
+ # users do when no one is looking
145
145
  Minuteman::User['787c8770-0ac2-4654-9fa4-e57d152fa341']
146
146
 
147
147
  # But since the point is to be able to get tied to your data you can promote a
@@ -105,10 +105,13 @@ module Minuteman
105
105
  end
106
106
  end
107
107
 
108
+ # Helper method to easily access the analytics part
108
109
  def Minuteman(action)
109
110
  Minuteman.analyze(action)
110
111
  end
111
112
 
113
+ # Why call this method so different from Minuteman?
114
+ # for the lulz: https://github.com/maccman/counterman/issues/1
112
115
  def Counterman(action)
113
116
  Minuteman.count(action)
114
117
  end
@@ -1,5 +1,3 @@
1
- require 'msgpack'
2
-
3
1
  module Minuteman
4
2
  module Analyzable
5
3
  module ErrorPatterns
@@ -57,8 +55,8 @@ module Minuteman
57
55
  return Minuteman::Result.new(destination_key)
58
56
  end
59
57
 
60
- script(Minuteman::LUA_OPERATIONS, 0, action.upcase.to_msgpack,
61
- events.map(&:key).to_msgpack, destination_key.to_msgpack)
58
+ script(Minuteman::LUA_OPERATIONS, 0, action.upcase.to_json,
59
+ events.map(&:key).to_json, destination_key.to_json)
62
60
 
63
61
  Minuteman::Result.new(destination_key)
64
62
  end
@@ -1,6 +1,7 @@
1
1
  module Minuteman
2
2
  class Configuration
3
- attr_accessor :redis, :patterns, :prefix, :parallel, :operations_prefix
3
+ attr_reader :redis
4
+ attr_accessor :patterns, :prefix, :parallel, :operations_prefix
4
5
 
5
6
  def initialize
6
7
  @redis = Ohm.redis
@@ -13,7 +14,7 @@ module Minuteman
13
14
  month: -> (time) { time.strftime("%Y-%m") },
14
15
  day: -> (time) { time.strftime("%Y-%m-%d") },
15
16
  hour: -> (time) { time.strftime("%Y-%m-%d %H") },
16
- minute: -> (time) { time.strftime("%Y-%m-%d %H:%m") },
17
+ minute: -> (time) { time.strftime("%Y-%m-%d %H:%M") },
17
18
  }
18
19
  end
19
20
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  redis.log(redis.LOG_NOTICE, 'Minuteman')
3
3
 
4
- local action = cmsgpack.unpack(ARGV[1])
5
- local keys = cmsgpack.unpack(ARGV[2])
6
- local dest = cmsgpack.unpack(ARGV[3])
4
+ local action = cjson.decode(ARGV[1])
5
+ local keys = cjson.decode(ARGV[2])
6
+ local dest = cjson.decode(ARGV[3])
7
7
 
8
8
  local function operate(action, keys)
9
9
  if type(keys) == "string" then keys = { keys } end
@@ -1,4 +1,5 @@
1
- require 'ohm'
1
+ require "ohm"
2
+ require "nest"
2
3
 
3
4
  module Minuteman
4
5
  class Model < ::Ohm::Model
@@ -31,8 +32,7 @@ module Minuteman
31
32
  end
32
33
 
33
34
  def key
34
- "#{self.class.name}::#{type}:#{time}"
35
+ Nest.new("#{self.class.name}::#{type}:#{time}", Minuteman.config.redis)
35
36
  end
36
-
37
37
  end
38
38
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "minuteman"
3
- s.version = "2.0.0"
3
+ s.version = "3.0.0"
4
4
  s.summary = "Bit Analytics"
5
5
  s.description = "Fast and furious tracking system using Redis bitwise operations"
6
6
  s.authors = ["elcuervo"]
@@ -10,8 +10,9 @@ Gem::Specification.new do |s|
10
10
  s.files = `git ls-files`.split("\n")
11
11
  s.test_files = `git ls-files test`.split("\n")
12
12
 
13
- s.add_dependency("redic", "~> 1.5.0")
14
- s.add_dependency("ohm", "~> 2.3.0")
13
+ s.add_dependency("redic", "~> 1.5")
14
+ s.add_dependency("nest", "~> 3.1")
15
+ s.add_dependency("ohm", "~> 3.1")
15
16
 
16
- s.add_development_dependency("cutest", "~> 1.2.2")
17
+ s.add_development_dependency("cutest", "~> 1.2")
17
18
  end
@@ -21,7 +21,8 @@ test "a connection" do
21
21
  end
22
22
 
23
23
  test "models in minuteman namespace" do
24
- assert_equal Minuteman::User.create.key, "Minuteman::User:1"
24
+ namespace = Minuteman::User.create.key.to_s
25
+ assert_equal namespace, "Minuteman::User:1"
25
26
  end
26
27
 
27
28
  test "an anonymous user" do
@@ -51,7 +52,7 @@ test "track an user" do
51
52
  assert Minuteman.track("login:successful", user)
52
53
 
53
54
  analyzer = Minuteman.analyze("login:successful")
54
- assert analyzer.day(Time.now.utc).count == 1
55
+ assert_equal analyzer.day(Time.now.utc).count, 1
55
56
  end
56
57
 
57
58
  test "tracks an anonymous user and the promotes it to a real one" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minuteman
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - elcuervo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-01 00:00:00.000000000 Z
11
+ date: 2019-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redic
@@ -16,42 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.0
19
+ version: '1.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.0
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: nest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: ohm
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 2.3.0
47
+ version: '3.1'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 2.3.0
54
+ version: '3.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: cutest
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 1.2.2
61
+ version: '1.2'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 1.2.2
68
+ version: '1.2'
55
69
  description: Fast and furious tracking system using Redis bitwise operations
56
70
  email:
57
71
  - yo@brunoaguirre.com
@@ -62,6 +76,8 @@ files:
62
76
  - ".gems"
63
77
  - ".gitignore"
64
78
  - ".travis.yml"
79
+ - Gemfile
80
+ - Gemfile.lock
65
81
  - HUGS
66
82
  - LICENSE
67
83
  - ORIGIN.md
@@ -103,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
119
  version: '0'
104
120
  requirements: []
105
121
  rubyforge_project:
106
- rubygems_version: 2.2.2
122
+ rubygems_version: 2.7.6
107
123
  signing_key:
108
124
  specification_version: 4
109
125
  summary: Bit Analytics