minuteman 2.0.0.pre → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33273982b184b97986adee038d64bc71a5ebf868
4
- data.tar.gz: 1787e29f6314d78e1967140a1194692b58fc678c
3
+ metadata.gz: d96820b756c302030f2a5758b0da28c5180158e0
4
+ data.tar.gz: 202b4c5ad523ea3a95826b398ebb53ba11b7480c
5
5
  SHA512:
6
- metadata.gz: 8e3d61fa6e931eceb2935d14ca8d734494e945e04d7a8676565e8c1c5e47454cfffdc336d71724e9c05ccfa2ac17e4f79fe69c4d4054bb1223988653a63c9d2a
7
- data.tar.gz: 4925693e4ed12b00efe943693c0940296eb6c7d762e5a8697be551381ce0711b1feee081e778867f7a3c1d24db99c914c3a13da7cd0b9f69acb77ea9f3af9119
6
+ metadata.gz: 0d673fb5af390e80cb753487785e3d63e2f5c9029761092079266e39aff090a14c21cbd935e7e6b13d98144dd15607dab22f805212757846bbbfbd214cd8778f
7
+ data.tar.gz: ee9a2b9a6dee683c9798bbe097ffe113d0c5ecb47fa3a62997860a069cc896225c6f7faf55d54fea0941bbba721a8273defda5b0c7c77fd4adcd73b2b3c3b720
@@ -0,0 +1 @@
1
+ pkg
@@ -25,6 +25,10 @@ module Minuteman
25
25
  @_time_spans = patterns.keys
26
26
  end
27
27
 
28
+ def events
29
+ config.redis.call("SMEMBERS", "#{Minuteman.prefix}::Events")
30
+ end
31
+
28
32
  def track(action, users = nil, time = Time.now.utc)
29
33
  users = Minuteman::User.create if users.nil?
30
34
 
@@ -63,7 +63,8 @@ module Minuteman
63
63
  Minuteman::Result.new(destination_key)
64
64
  end
65
65
 
66
- # Stolen from Ohm
66
+ # Code taken from Ohm. Just small changes to adapt to the current Minuteman
67
+ # stuff. elcuervo <3 (soveran + djanowski)
67
68
  def script(file, *args)
68
69
  begin
69
70
  cache = Minuteman::LUA_CACHE[Minuteman.config.redis.url]
@@ -91,6 +92,5 @@ module Minuteman
91
92
  end
92
93
  end
93
94
  end
94
-
95
95
  end
96
96
  end
@@ -5,10 +5,6 @@ module Minuteman
5
5
  def initialize(action, klass = Minuteman::Event, user = nil)
6
6
  Minuteman.patterns.keys.each do |method|
7
7
  define_singleton_method(method) do |time = Time.now.utc|
8
- if !Minuteman.patterns.include?(method)
9
- raise MissingPattern.new(method)
10
- end
11
-
12
8
  key = Minuteman.patterns[method].call(time)
13
9
  search = { type: action, time: key }
14
10
  search[:user_id] = user.id if !user.nil?
@@ -24,7 +24,9 @@ module Minuteman
24
24
 
25
25
  def self.create(*args)
26
26
  event = super(*args)
27
+ Minuteman.config.redis.call("SADD", "#{Minuteman.prefix}::Events", event.type)
27
28
  Minuteman.config.redis.call("SET", "#{event.key}:id", event.id)
29
+
28
30
  event
29
31
  end
30
32
 
@@ -5,12 +5,16 @@ module Minuteman
5
5
  class User < ::Ohm::Model
6
6
  attribute :uid
7
7
  attribute :identifier
8
+ attribute :anonymous
8
9
 
9
10
  unique :uid
10
11
  unique :identifier
11
12
 
13
+ index :anonymous
14
+
12
15
  def save
13
16
  self.uid ||= SecureRandom.uuid
17
+ self.anonymous ||= !identifier
14
18
  super
15
19
  end
16
20
 
@@ -26,8 +30,13 @@ module Minuteman
26
30
  Minuteman::Analyzer.new(action, Minuteman::Counter::User, self)
27
31
  end
28
32
 
33
+ def anonymous?
34
+ self.anonymous == true
35
+ end
36
+
29
37
  def promote(identifier)
30
38
  self.identifier = identifier
39
+ self.anonymous = false
31
40
  save
32
41
  end
33
42
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "minuteman"
3
- s.version = "2.0.0.pre"
3
+ s.version = "2.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"]
@@ -202,3 +202,26 @@ scope "do actions through a user" do
202
202
  assert user.count("login:attempts").day.count == 3
203
203
  end
204
204
  end
205
+
206
+ test "get all the created events" do
207
+ Minuteman.config.redis.call("FLUSHDB")
208
+
209
+ assert Minuteman.events.count == 0
210
+
211
+ 10.times { |i|
212
+ Minuteman.track("test:#{i}")
213
+ }
214
+
215
+ assert Minuteman.events.count == 10
216
+ assert Minuteman.events.include?("test:5")
217
+ end
218
+
219
+ test "users are anonymous if they don't have an identifier" do
220
+ user = Minuteman.track("some_event")
221
+
222
+ assert user.anonymous? == true
223
+
224
+ user.promote 123
225
+
226
+ assert user.anonymous? == false
227
+ end
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.pre
4
+ version: 2.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-10-27 00:00:00.000000000 Z
11
+ date: 2015-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redic
@@ -60,6 +60,7 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".gems"
63
+ - ".gitignore"
63
64
  - ".travis.yml"
64
65
  - HUGS
65
66
  - LICENSE
@@ -76,7 +77,6 @@ files:
76
77
  - lib/minuteman/lua/operations.lua
77
78
  - lib/minuteman/model.rb
78
79
  - lib/minuteman/result.rb
79
- - lib/minuteman/trigger.rb
80
80
  - lib/minuteman/user.rb
81
81
  - minuteman.gemspec
82
82
  - test/helper.rb
@@ -98,9 +98,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
98
  version: '0'
99
99
  required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 1.3.1
103
+ version: '0'
104
104
  requirements: []
105
105
  rubyforge_project:
106
106
  rubygems_version: 2.2.2
@@ -1,4 +0,0 @@
1
- module Minuteman
2
- module Trigger
3
- end
4
- end