request_recorder 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- request_recorder (0.0.3)
4
+ request_recorder (0.0.4)
5
5
  rack
6
6
 
7
7
  GEM
data/Readme.md CHANGED
@@ -8,11 +8,14 @@ Install
8
8
  Add to your middleware stack:
9
9
 
10
10
  require "request_recorder"
11
- use RequestRecorder::Middleware, :store => RequestRecorder::RedisLogger.new(Redis.new)
12
11
 
13
- ### No Redis, No problem
14
- If you do not have redis, you can write your own logger, you only need a .write method,
15
- see [RedisLogger](https://github.com/grosser/request_recorder/blob/master/lib/request_recorder/redis_logger.rb)
12
+ require "request_recorder/cache_logger"
13
+ use RequestRecorder::Middleware, :store => RequestRecorder::CacheLogger.new(Rails.cache)
14
+
15
+ -- or --
16
+
17
+ require "request_recorder/redis_logger"
18
+ use RequestRecorder::Middleware, :store => RequestRecorder::RedisLogger.new(Redis.new)
16
19
 
17
20
  Usage
18
21
  =====
@@ -0,0 +1,15 @@
1
+ module RequestRecorder
2
+ class CacheLogger
3
+ KEY = "request_recorder"
4
+
5
+ def initialize(store)
6
+ @store = store
7
+ end
8
+
9
+ def write(id, text)
10
+ id = "#{KEY}.#{Time.now.utc.strftime("%Y-%m-%d %H:%M:%S.%L")}_#{Process.pid}" unless id
11
+ @store.write(id, @store.read(id).to_s + text)
12
+ id
13
+ end
14
+ end
15
+ end
@@ -8,7 +8,7 @@ module RequestRecorder
8
8
 
9
9
  def write(id, text)
10
10
  old = (id ? @redis.hget(KEY, id) : "")
11
- id = "#{Time.now.utc.strftime("%Y-%m-%d %H:%M:%S")}_#{Process.pid}" unless id
11
+ id = "#{Time.now.utc.strftime("%Y-%m-%d %H:%M:%S.%L")}_#{Process.pid}" unless id
12
12
  @redis.hset(KEY, id, old.to_s + text)
13
13
  id
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module RequestRecorder
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,6 +1,5 @@
1
1
  require "request_recorder/version"
2
2
  require "request_recorder/middleware"
3
- require "request_recorder/redis_logger"
4
3
 
5
4
  module RequestRecorder
6
5
  end
@@ -0,0 +1,43 @@
1
+ require "spec_helper"
2
+
3
+ describe RequestRecorder::CacheLogger do
4
+ class Store
5
+ def initialize
6
+ @data = {}
7
+ end
8
+
9
+ def read(x)
10
+ @data[x]
11
+ end
12
+
13
+ def write(x,y)
14
+ @data[x] = y
15
+ end
16
+ end
17
+
18
+ let(:store){ Store.new }
19
+ let(:logger){ RequestRecorder::CacheLogger.new(store) }
20
+
21
+ context "#write" do
22
+ it "returns a unique id" do
23
+ old = logger.write(nil, "X")
24
+ sleep 0.01
25
+ old.should_not == logger.write(nil, "X")
26
+ end
27
+
28
+ it "returns existing ids" do
29
+ "1111".should == logger.write("1111", "X")
30
+ end
31
+
32
+ it "creates a new entry" do
33
+ logger.write("1111", "X")
34
+ store.read("1111").should == "X"
35
+ end
36
+
37
+ it "appends to an existing key" do
38
+ logger.write("1111", "X")
39
+ logger.write("1111", "X")
40
+ store.read("1111").should == "XX"
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+
3
+ describe RequestRecorder::RedisLogger do
4
+ let(:store){ FakeRedis::Redis.new }
5
+ let(:key){ RequestRecorder::RedisLogger::KEY }
6
+ let(:logger){ RequestRecorder::RedisLogger.new(store) }
7
+
8
+ context "#write" do
9
+ it "returns a unique id" do
10
+ old = logger.write(nil, "X")
11
+ sleep 0.01
12
+ old.should_not == logger.write(nil, "X")
13
+ end
14
+
15
+ it "returns existing ids" do
16
+ "1111".should == logger.write("1111", "X")
17
+ end
18
+
19
+ it "creates a new entry" do
20
+ logger.write("1111", "X")
21
+ store.hget(key, "1111").should == "X"
22
+ end
23
+
24
+ it "appends to an existing key" do
25
+ logger.write("1111", "X")
26
+ logger.write("1111", "X")
27
+ store.hget(key, "1111").should == "XX"
28
+ end
29
+ end
30
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require "request_recorder"
2
+ require "request_recorder/redis_logger"
3
+ require "request_recorder/cache_logger"
2
4
 
3
5
  require "active_record"
4
6
  require "fakeredis"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: request_recorder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -39,10 +39,13 @@ files:
39
39
  - Rakefile
40
40
  - Readme.md
41
41
  - lib/request_recorder.rb
42
+ - lib/request_recorder/cache_logger.rb
42
43
  - lib/request_recorder/middleware.rb
43
44
  - lib/request_recorder/redis_logger.rb
44
45
  - lib/request_recorder/version.rb
45
46
  - request_recorder.gemspec
47
+ - spec/request_recorder/cache_logger_spec.rb
48
+ - spec/request_recorder/redis_logger_spec.rb
46
49
  - spec/request_recorder_spec.rb
47
50
  - spec/spec_helper.rb
48
51
  homepage: http://github.com/grosser/request_recorder
@@ -60,7 +63,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
60
63
  version: '0'
61
64
  segments:
62
65
  - 0
63
- hash: 4362379118001674709
66
+ hash: 4604048949302387428
64
67
  required_rubygems_version: !ruby/object:Gem::Requirement
65
68
  none: false
66
69
  requirements:
@@ -69,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
72
  version: '0'
70
73
  segments:
71
74
  - 0
72
- hash: 4362379118001674709
75
+ hash: 4604048949302387428
73
76
  requirements: []
74
77
  rubyforge_project:
75
78
  rubygems_version: 1.8.24