request_id 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -14,7 +14,7 @@ Throughout the system. It includes:
14
14
  Add this line to your application's Gemfile:
15
15
 
16
16
  ```ruby
17
- gem 'request_id', github: 'remind101/request_id'
17
+ gem 'request_id'
18
18
  ```
19
19
 
20
20
  ## Usage
@@ -25,7 +25,6 @@ Add the rack middleware:
25
25
  use Rack::RequestId
26
26
  ```
27
27
 
28
-
29
28
  ### If you're using Sidekiq
30
29
 
31
30
  Add the client middleware.
@@ -1,3 +1,5 @@
1
+ require 'securerandom'
2
+
1
3
  module Rack
2
4
 
3
5
  # Public: Rack middleware that stores the Heroku-Request-Id header in a
@@ -23,11 +25,26 @@ module Rack
23
25
  end
24
26
 
25
27
  def call(env)
26
- ::RequestId.with_request_id(env[REQUEST_HEADER]) do
28
+ ::RequestId.with_request_id(request_id(env)) do
27
29
  status, headers, body = @app.call(env)
28
30
  headers[RESPONSE_HEADER] ||= ::RequestId.request_id
29
31
  [status, headers, body]
30
32
  end
31
33
  end
34
+
35
+ private
36
+
37
+ def request_id(env)
38
+ env[REQUEST_HEADER] || generate
39
+ end
40
+
41
+ def generate
42
+ generate? && SecureRandom.hex(16)
43
+ end
44
+
45
+ def generate?
46
+ ::RequestId.configuration.generate
47
+ end
48
+
32
49
  end
33
50
  end
data/lib/request_id.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'request_id/version'
2
2
 
3
3
  module RequestId
4
+ autoload :Configuration, 'request_id/configuration'
5
+
4
6
  class << self
5
7
 
6
8
  # Public: Retrieve the current request_id, which is generally set by the
@@ -50,6 +52,21 @@ module RequestId
50
52
  RequestId.request_id = last_request_id
51
53
  end
52
54
 
55
+ def configuration
56
+ @configuration ||= Configuration.new
57
+ end
58
+
59
+ # Public: Configure RequestId.
60
+ #
61
+ # Examples
62
+ #
63
+ # RequestId.configure do |config|
64
+ # config.generate = false
65
+ # end
66
+ def configure
67
+ yield configuration
68
+ end
69
+
53
70
  end
54
71
  end
55
72
 
@@ -0,0 +1,12 @@
1
+ module RequestId
2
+ class Configuration
3
+ # If set to true, the rack middleware will automatically generate a request
4
+ # id. Useful in development. Defaults to true if this is a rails app an
5
+ # we're in development.
6
+ attr_accessor :generate
7
+
8
+ def initialize
9
+ @generate = defined?(Rails) && Rails.env.development?
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module RequestId
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: request_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-12 00:00:00.000000000 Z
12
+ date: 2013-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -75,6 +75,7 @@ files:
75
75
  - Rakefile
76
76
  - lib/rack/request_id.rb
77
77
  - lib/request_id.rb
78
+ - lib/request_id/configuration.rb
78
79
  - lib/request_id/version.rb
79
80
  - lib/sidekiq/middleware/client/request_id.rb
80
81
  - lib/sidekiq/middleware/server/request_id.rb
@@ -100,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
101
  version: '0'
101
102
  segments:
102
103
  - 0
103
- hash: 4275333693123004164
104
+ hash: -4189853304360477906
104
105
  required_rubygems_version: !ruby/object:Gem::Requirement
105
106
  none: false
106
107
  requirements:
@@ -109,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
110
  version: '0'
110
111
  segments:
111
112
  - 0
112
- hash: 4275333693123004164
113
+ hash: -4189853304360477906
113
114
  requirements: []
114
115
  rubyforge_project:
115
116
  rubygems_version: 1.8.23