request_recorder 0.0.7 → 0.0.8

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- request_recorder (0.0.7)
4
+ request_recorder (0.0.8)
5
5
  rack
6
6
 
7
7
  GEM
@@ -1,6 +1,7 @@
1
1
  require "stringio"
2
2
  require "rack/request"
3
3
  require "rack/response"
4
+ require "request_recorder/repeater"
4
5
 
5
6
  module RequestRecorder
6
7
  class Middleware
@@ -16,7 +17,7 @@ module RequestRecorder
16
17
  def call(env)
17
18
  # keep this part as fast as possible, since 99.99999% of requests will not need it
18
19
  return @app.call(env) unless (
19
- (env["QUERY_STRING"] && env["QUERY_STRING"].include?(MARKER)) or
20
+ (env["QUERY_STRING"] && env["QUERY_STRING"].include?(MARKER)) or
20
21
  (env["HTTP_COOKIE"] && env["HTTP_COOKIE"].include?(MARKER))
21
22
  )
22
23
 
@@ -57,13 +58,16 @@ module RequestRecorder
57
58
  end
58
59
 
59
60
  def capture_logging
60
- recorder = StringIO.new
61
61
  old = [
62
62
  ActiveRecord::Base.logger.instance_variable_get("@log"),
63
63
  ActiveRecord::Base.logger.auto_flushing,
64
64
  ActiveRecord::Base.logger.level
65
65
  ]
66
- ActiveRecord::Base.logger.instance_variable_set("@log", recorder)
66
+
67
+ recorder = StringIO.new
68
+ repeater = Repeater.new([recorder, old[0]])
69
+
70
+ ActiveRecord::Base.logger.instance_variable_set("@log", repeater)
67
71
  ActiveRecord::Base.logger.auto_flushing = true
68
72
  ActiveRecord::Base.logger.level = Logger::DEBUG
69
73
  yield
@@ -0,0 +1,11 @@
1
+ module RequestRecorder
2
+ class Repeater
3
+ def initialize(targets)
4
+ @targets = targets
5
+ end
6
+
7
+ def write(*args)
8
+ @targets.each{|t| t.write(*args) }
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module RequestRecorder
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe RequestRecorder do
4
- let(:original_logger){ ActiveSupport::BufferedLogger.new("/dev/null") }
4
+ let(:original_logger){ ActiveSupport::BufferedLogger.new("/dev/null").instance_variable_get("@log") }
5
5
  let(:activate_logger){ {"QUERY_STRING" => "__request_recording=10"} }
6
6
  let(:inner_app){ lambda{|env|
7
7
  Car.first
@@ -31,6 +31,13 @@ describe RequestRecorder do
31
31
  stored.values.last.should include "SELECT"
32
32
  end
33
33
 
34
+ it "still writes to the old log to keep us compliant with 'logging all requests'" do
35
+ recorder = StringIO.new
36
+ ActiveRecord::Base.logger.instance_variable_set("@log", recorder)
37
+ middleware.call(activate_logger)
38
+ recorder.string.should == stored.values.last
39
+ end
40
+
34
41
  it "starts with a given key" do
35
42
  middleware.call({"QUERY_STRING" => "__request_recording=10|abcdefg"})
36
43
  redis.hget(redis_key, "abcdefg").should include "SELECT"
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.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -42,6 +42,7 @@ files:
42
42
  - lib/request_recorder/cache_logger.rb
43
43
  - lib/request_recorder/middleware.rb
44
44
  - lib/request_recorder/redis_logger.rb
45
+ - lib/request_recorder/repeater.rb
45
46
  - lib/request_recorder/version.rb
46
47
  - request_recorder.gemspec
47
48
  - spec/request_recorder/cache_logger_spec.rb
@@ -63,7 +64,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
63
64
  version: '0'
64
65
  segments:
65
66
  - 0
66
- hash: 3121116752566984075
67
+ hash: 3361379851092162190
67
68
  required_rubygems_version: !ruby/object:Gem::Requirement
68
69
  none: false
69
70
  requirements:
@@ -72,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
73
  version: '0'
73
74
  segments:
74
75
  - 0
75
- hash: 3121116752566984075
76
+ hash: 3361379851092162190
76
77
  requirements: []
77
78
  rubyforge_project:
78
79
  rubygems_version: 1.8.24