request_headers_logger 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1a3ef4bf0a8787742b143de9fd75e856c99284dd
4
+ data.tar.gz: 8159bb657b7de2a5036a113d0dc05b65d4a1ac34
5
+ SHA512:
6
+ metadata.gz: b8bff686ae38f14bf3c5e4db57466c63385b307cd6a4633b61653b2b470f7fc89f27fbb843d50c28c507d2b0c319365af5ce988f08da479f57eea1d3d1a09ddb
7
+ data.tar.gz: f08ca98445f59ad39f3e0c88ad10b18f2cb4982049b177ce0fbf704ce4de2b3e6493f8314ce863dbaf881528d49a639ecce67e32590ab6e612f9e8ba849bfea7
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ InstalledFiles
7
+ _yardoc
8
+ coverage
9
+ doc/
10
+ lib/bundler/man
11
+ pkg
12
+ rdoc
13
+ spec/reports
14
+ tmp
15
+ .byebug_history
data/.rubocop.yml ADDED
@@ -0,0 +1,27 @@
1
+ AllCops:
2
+ Exclude:
3
+ - '.git-hooks/**/*'
4
+ - 'bin/*'
5
+ - 'db/schema.rb'
6
+ - 'db/migrate/*'
7
+ - 'vendor/bundle/**/*'
8
+ - 'config/environments/*'
9
+ - 'Rakefile'
10
+
11
+ Style/ModuleFunction:
12
+ Enabled: false
13
+
14
+ Metrics/BlockLength:
15
+ Exclude:
16
+ - 'Rakefile'
17
+ - '**/*.rake'
18
+ - 'spec/**/*.rb'
19
+
20
+ Metrics/LineLength:
21
+ Max: 120
22
+
23
+ Style/Documentation:
24
+ Enabled: false
25
+
26
+ Lint/UnusedBlockArgument:
27
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.3
data/.travis.yml ADDED
@@ -0,0 +1,19 @@
1
+ language: ruby
2
+ sudo: false
3
+ rvm:
4
+ - "2.3.1"
5
+ - "2.3.3"
6
+ - "2.4.1"
7
+
8
+
9
+ before_install: gem install bundler
10
+
11
+ script: bin/travis
12
+
13
+ matrix:
14
+ fast_finish: true
15
+
16
+ env:
17
+ matrix:
18
+ - BUILD_TYPE=rspec
19
+ - BUILD_TYPE=rubocop
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in request_store.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,81 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ request_headers_logger (0.0.1)
5
+ activesupport (> 4.0)
6
+ request_headers_middleware (~> 0.0.4)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activesupport (5.1.5)
12
+ concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ i18n (~> 0.7)
14
+ minitest (~> 5.1)
15
+ tzinfo (~> 1.1)
16
+ ast (2.4.0)
17
+ concurrent-ruby (1.0.5)
18
+ delayed_job (4.1.4)
19
+ activesupport (>= 3.0, < 5.2)
20
+ diff-lcs (1.2.5)
21
+ docile (1.1.5)
22
+ i18n (0.9.5)
23
+ concurrent-ruby (~> 1.0)
24
+ json (2.1.0)
25
+ minitest (5.11.3)
26
+ parallel (1.12.1)
27
+ parser (2.5.0.2)
28
+ ast (~> 2.4.0)
29
+ powerpack (0.1.1)
30
+ rack (1.6.5)
31
+ rainbow (3.0.0)
32
+ rake (12.0.0)
33
+ request_headers_middleware (0.0.4)
34
+ request_store
35
+ request_store (1.4.0)
36
+ rack (>= 1.4)
37
+ rspec (3.5.0)
38
+ rspec-core (~> 3.5.0)
39
+ rspec-expectations (~> 3.5.0)
40
+ rspec-mocks (~> 3.5.0)
41
+ rspec-core (3.5.4)
42
+ rspec-support (~> 3.5.0)
43
+ rspec-expectations (3.5.0)
44
+ diff-lcs (>= 1.2.0, < 2.0)
45
+ rspec-support (~> 3.5.0)
46
+ rspec-mocks (3.5.0)
47
+ diff-lcs (>= 1.2.0, < 2.0)
48
+ rspec-support (~> 3.5.0)
49
+ rspec-support (3.5.0)
50
+ rubocop (0.53.0)
51
+ parallel (~> 1.10)
52
+ parser (>= 2.5)
53
+ powerpack (~> 0.1)
54
+ rainbow (>= 2.2.2, < 4.0)
55
+ ruby-progressbar (~> 1.7)
56
+ unicode-display_width (~> 1.0, >= 1.0.1)
57
+ ruby-progressbar (1.9.0)
58
+ simplecov (0.12.0)
59
+ docile (~> 1.1.0)
60
+ json (>= 1.8, < 3)
61
+ simplecov-html (~> 0.10.0)
62
+ simplecov-html (0.10.0)
63
+ thread_safe (0.3.6)
64
+ tzinfo (1.2.5)
65
+ thread_safe (~> 0.1)
66
+ unicode-display_width (1.3.0)
67
+
68
+ PLATFORMS
69
+ ruby
70
+
71
+ DEPENDENCIES
72
+ delayed_job (~> 4.1, >= 4.1.4)
73
+ rack (~> 1.6, >= 1.6.5)
74
+ rake (~> 12.0, >= 12.0.0)
75
+ request_headers_logger!
76
+ rspec (~> 3.5, >= 3.5.0)
77
+ rubocop (~> 0.53.0)
78
+ simplecov (~> 0.12.0)
79
+
80
+ BUNDLED WITH
81
+ 1.16.1
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2017 Marc Grimme
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # RequestHeaderLogger
2
+ RequestHeaderLogger Allows you to tag logs with RequestHeader flags
3
+
4
+ In micro-service architecture it is very important to be able to corroborate logs from different services for a specific request. The correlation must include both services connected synchronously or asynchronously.
5
+
6
+ For this issue the *X-Request-Id* HTTP header was introduced. In Rails the *ActionDispatch::RequestId* middleware helps create a unique ID
7
+ for each request if not already defined by the *X-Request-Id* header. In addition, *RequestHeaderMiddleware* will allow you to share the same 'X-Request-Id' for multiple requests and multiple services.
8
+
9
+ Unfortunately, Using *RequestHeaderMiddleware* and *ActionDispatch::RequestId* do not solve the Issues completely. *RequestHeaderMiddleware* will share the *X-Request-Id* only with synchronous requests.
10
+
11
+ The gem can be used to share *RequestHeader* store items the asynchronous services (Delayed Jobs). The default is the while listed item is *X-Request-Id*. However, It is possible to extend the whilelist with more items.
12
+
13
+ ## Installation
14
+
15
+ ### Rails
16
+
17
+ So how does it work with Rails.
18
+
19
+ Add this line to your application's Gemfile:
20
+
21
+ ``
22
+ gem 'request_headers_logger'
23
+ ``
24
+
25
+ And then execute:
26
+
27
+ ``
28
+ $ bundle
29
+ ``
30
+
31
+ That's it now Delayed job logs should show the *X-Request-Id* from the http request.
32
+
33
+
34
+ ### Whitelist
35
+
36
+ Per default the delayed job plug in applies a whitelist to only filter *X-Request-Id* header from the store. To white list new flags, you can do the following.
37
+
38
+ ``
39
+ RequestHeadersLogger.whitelist << "customer-id".to_sym
40
+ ``
data/Rakefile ADDED
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+ require 'bundler/gem_tasks'
3
+
4
+ require 'rspec/core/rake_task'
5
+
6
+ # Add default task. When you type just rake command this would run. Travis CI runs this. Making this run spec
7
+ desc 'Default: run specs.'
8
+ task :default => :spec
9
+
10
+ # Defining spec task for running spec
11
+ desc "Run specs"
12
+ RSpec::Core::RakeTask.new('spec') do |spec|
13
+ # Pattern filr for spec files to run. This is default btw.
14
+ spec.pattern = "./spec/**/*_spec.rb"
15
+ end
16
+
17
+ # Run the rdoc task to generate rdocs for this gem
18
+ require 'rdoc/task'
19
+ RDoc::Task.new do |rdoc|
20
+ require File.expand_path("../lib/request_headers_middleware/version", __FILE__)
21
+ version = RequestHeadersMiddleware::VERSION
22
+
23
+ rdoc.rdoc_dir = 'rdoc'
24
+ rdoc.title = "release_headers_middleware #{version}"
25
+ rdoc.rdoc_files.include('README*')
26
+ rdoc.rdoc_files.include('lib/**/*.rb')
27
+ end
28
+
29
+ desc "Code coverage detail"
30
+ task :coverage do
31
+ ENV['COVERAGE'] = "true"
32
+ Rake::Task['spec'].execute
33
+ end
34
+
35
+ desc "Console for checking things"
36
+ task :console do
37
+ require 'irb'
38
+ require 'irb/completion'
39
+ require 'logger_instrumentation'
40
+ ARGV.clear
41
+ IRB.start
42
+ end
data/bin/travis ADDED
@@ -0,0 +1,12 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ case "$BUILD_TYPE" in
6
+ "rubocop")
7
+ bundle exec rubocop
8
+ ;;
9
+ "rspec")
10
+ bundle exec rspec
11
+ ;;
12
+ esac
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ if defined?(Delayed)
4
+ require_relative 'performable_method'
5
+ require_relative 'request_header_delayed_plugin'
6
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'delayed_job'
4
+
5
+ module Delayed
6
+ class PerformableMethod
7
+ attr_accessor :object, :method_name, :args, :store
8
+
9
+ def encode_with(coder)
10
+ coder.map = {
11
+ 'object' => object,
12
+ 'method_name' => method_name,
13
+ 'args' => args,
14
+ 'store' => store
15
+ }
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'delayed_job'
4
+
5
+ module RequestHeadersLogger
6
+ class RequestHeadersDelayedPlugin < Delayed::Plugin
7
+ callbacks do |lifecycle|
8
+ lifecycle.before(:enqueue) do |job|
9
+ obj = job.payload_object.dup
10
+ obj.instance_variable_set(:@store, RequestHeadersMiddleware.store)
11
+ job.payload_object = obj
12
+ end
13
+
14
+ lifecycle.before(:perform) do |worker, job|
15
+ RequestHeadersMiddleware.store = job.payload_object.instance_variable_get(:@store)
16
+
17
+ RequestHeadersLogger.tag_logger Delayed::Worker.logger
18
+ RequestHeadersLogger.tag_logger ::Rails.logger unless dj_use_rails_logger
19
+ end
20
+
21
+ lifecycle.after(:perform) do |worker, job|
22
+ RequestHeadersLogger.untag_logger Delayed::Worker.logger
23
+ RequestHeadersLogger.untag_logger ::Rails.logger unless dj_use_rails_logger
24
+
25
+ RequestHeadersMiddleware.store = {}
26
+ end
27
+ end
28
+
29
+ def self.dj_use_rails_logger
30
+ ::Rails.logger == Delayed::Worker.logger
31
+ end
32
+ end
33
+ end
34
+
35
+ Delayed::Worker.plugins << RequestHeadersLogger::RequestHeadersDelayedPlugin
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RequestHeadersLogger
4
+ VERSION = '0.0.1'
5
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support'
4
+ require 'request_headers_middleware'
5
+ require 'request_headers_logger/delayed_job/delayed_job'
6
+
7
+ module RequestHeadersLogger # :nodoc:
8
+ extend self
9
+
10
+ attr_accessor :whitelist
11
+ @whitelist = ['x-request-id'.to_sym]
12
+
13
+ def tags
14
+ filter(RequestHeadersMiddleware.store)
15
+ end
16
+
17
+ def tag_logger(logger)
18
+ logger = tagged_logger(logger) unless logger.respond_to? :push_tags
19
+ tags.each do |_tag, value|
20
+ logger.push_tags(value) unless value.nil?
21
+ end
22
+ end
23
+
24
+ def untag_logger(logger)
25
+ logger = tagged_logger(logger) unless logger.respond_to? :pop_tags
26
+ tags.each do |_tag, value|
27
+ logger.pop_tags unless value.nil?
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def tagged_logger(logger)
34
+ ActiveSupport::TaggedLogging.new(logger)
35
+ end
36
+
37
+ def filter(store)
38
+ store.select { |key, _value| @whitelist.include? key.downcase.to_sym }
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'request_headers_logger/version'
6
+
7
+ Gem::Specification.new do |gem|
8
+ gem.name = 'request_headers_logger'
9
+ gem.version = RequestHeadersLogger::VERSION
10
+ gem.authors = ['Al-waleed Shihadeh']
11
+ gem.email = ['wshihadh@gmail.com']
12
+ gem.description = 'RequestHeaderLogger Allows you to tag logs with RequestHeader flags.'
13
+ gem.summary = 'RequestHeaderLogger Allows you to tag logs with RequestHeader flags.'
14
+ gem.homepage = 'https://github.com/wshihadeh/request_headers_logger'
15
+ gem.licenses = ['MIT']
16
+
17
+ gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
19
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
+ gem.require_paths = ['lib']
21
+
22
+ gem.add_dependency 'activesupport', '> 4.0'
23
+ gem.add_dependency 'request_headers_middleware', '~> 0.0.4'
24
+
25
+ gem.add_development_dependency 'delayed_job', '~> 4.1', '>= 4.1.4'
26
+ gem.add_development_dependency 'rack', '~> 1.6', '>= 1.6.5'
27
+ gem.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
28
+ gem.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
29
+ gem.add_development_dependency 'rubocop', '~> 0.53.0'
30
+ gem.add_development_dependency 'simplecov', '~> 0.12.0'
31
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Delayed::PerformableMethod do
6
+ it 'has store attr_accessor' do
7
+ instance_methods = Delayed::PerformableMethod.instance_methods
8
+ expect(instance_methods.include?(:store)).to eq(true)
9
+ expect(instance_methods.include?(:store=)).to eq(true)
10
+ end
11
+
12
+ it 'set store' do
13
+ dj = Delayed::PerformableMethod.new(User.new, :send_email, {})
14
+ dj.store = { 'x-request-id': '101010' }
15
+
16
+ expect(dj.instance_variables).to eq(%I[@object @args @method_name @store])
17
+ expect(dj.object.class).to eq(User)
18
+ expect(dj.method_name).to eq(:send_email)
19
+ expect(dj.instance_variable_defined?(:@store)).to eq(true)
20
+ expect(dj.instance_variable_get(:@store)).to eq('x-request-id': '101010')
21
+ expect(dj.store[:'x-request-id']).to eq('101010')
22
+ end
23
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'active_support'
5
+
6
+ RSpec.describe RequestHeadersLogger do
7
+ let(:logger) { ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)) }
8
+
9
+ describe '.tags' do
10
+ before(:each) do
11
+ @store = { 'X-Request-Id': 'ef382618-e46d-42f5-aca6-ae9e1db8fee0',
12
+ 'X-Request-Id2': 'e46def38-2618-42f5-ae9e-1db8fee0aca6',
13
+ 'X-Request-Id3': '618e46de-f382-42f5-aca6-8fee0ae9e1db' }
14
+ end
15
+
16
+ it 'return only x-request-id by default' do
17
+ RequestHeadersMiddleware.store = @store
18
+
19
+ expect(RequestHeadersLogger.tags.count).to eq(1)
20
+ expect(RequestHeadersLogger.tags).to eq('X-Request-Id': 'ef382618-e46d-42f5-aca6-ae9e1db8fee0')
21
+ end
22
+
23
+ it 'return empty hash when whitelist is empty' do
24
+ RequestHeadersMiddleware.store = @store
25
+ RequestHeadersLogger.whitelist = []
26
+
27
+ expect(RequestHeadersLogger.tags.count).to eq(0)
28
+ expect(RequestHeadersLogger.tags).to eq({})
29
+ end
30
+
31
+ it 'return only the white listed flags' do
32
+ RequestHeadersMiddleware.store = @store
33
+ RequestHeadersLogger.whitelist = ['x-request-id'.to_sym, 'x-request-id2'.to_sym]
34
+
35
+ expect(RequestHeadersLogger.tags.count).to eq(2)
36
+ expect(RequestHeadersLogger.tags[:'X-Request-Id']).to eq('ef382618-e46d-42f5-aca6-ae9e1db8fee0')
37
+ expect(RequestHeadersLogger.tags[:'X-Request-Id2']).to eq('e46def38-2618-42f5-ae9e-1db8fee0aca6')
38
+ end
39
+ end
40
+
41
+ describe '.tag_logger' do
42
+ it 'tag the logger' do
43
+ store = { 'X-Request-Id': 'ef382618-e46d-42f5-aca6-ae9e1db8fee0' }
44
+ RequestHeadersMiddleware.store = store
45
+ RequestHeadersLogger.tag_logger logger
46
+ tags = logger.formatter.current_tags
47
+
48
+ expect(tags.count).to eq(1)
49
+ expect(tags.first).to eq(store[:'X-Request-Id'])
50
+ end
51
+ end
52
+
53
+ describe '.untag_logger' do
54
+ it 'untag the logger' do
55
+ store = { 'X-Request-Id': 'ef382618-e46d-42f5-aca6-ae9e1db8fee0' }
56
+ RequestHeadersMiddleware.store = store
57
+ RequestHeadersLogger.tag_logger logger
58
+ RequestHeadersLogger.untag_logger logger
59
+ tags = logger.formatter.current_tags
60
+
61
+ expect(tags.count).to eq(0)
62
+ expect(tags).to eq([])
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Notice there is a .rspec file in the root folder. It defines rspec arguments
4
+
5
+ # Ruby 1.9 uses simplecov. The ENV['COVERAGE'] is set when rake coverage
6
+ # is run in ruby 1.9
7
+ if ENV['COVERAGE']
8
+ require 'simplecov'
9
+ SimpleCov.start do
10
+ # Remove the spec folder from coverage. By default all code files are
11
+ # included.
12
+ # For more config options see
13
+ # https://github.com/colszowka/simplecov
14
+ add_filter File.expand_path('../spec', __dir__)
15
+ end
16
+ end
17
+
18
+ # Modify load path so you can require 'ogstasher directly.
19
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
20
+
21
+ require 'rubygems'
22
+ # Loads bundler setup tasks. Now if I run spec without installing gems then it
23
+ # would say gem not installed and do bundle install instead of ugly load error
24
+ # on require.
25
+ require 'bundler/setup'
26
+
27
+ # This will require me all the gems automatically for the groups. If I do only
28
+ # .setup then I will have to require gems manually. Note that you have still
29
+ # have to require some gems if they are part of bigger gem like ActiveRecord
30
+ # which is part of Rails. You can say :require => false in gemfile to always
31
+ # use explicit requiring
32
+ Bundler.require(:test)
33
+
34
+ Dir[File.join('./spec/support/**/*.rb')].each { |f| require f }
35
+
36
+ # Set Rails environment as test
37
+ ENV['RAILS_ENV'] = 'test'
38
+
39
+ require 'delayed_job'
40
+ require 'request_headers_middleware'
41
+ require 'request_headers_logger'
42
+ require 'rack/mock'
43
+
44
+ RSpec.configure do |config|
45
+ config.run_all_when_everything_filtered = true
46
+ config.filter_run :focus
47
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class User
4
+ def persisted?
5
+ true
6
+ end
7
+
8
+ def send_email
9
+ 'email sent'
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,205 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: request_headers_logger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Al-waleed Shihadeh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: request_headers_middleware
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.4
41
+ - !ruby/object:Gem::Dependency
42
+ name: delayed_job
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 4.1.4
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '4.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 4.1.4
61
+ - !ruby/object:Gem::Dependency
62
+ name: rack
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.6'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.6.5
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.6'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 1.6.5
81
+ - !ruby/object:Gem::Dependency
82
+ name: rake
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '12.0'
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 12.0.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '12.0'
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 12.0.0
101
+ - !ruby/object:Gem::Dependency
102
+ name: rspec
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '3.5'
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 3.5.0
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.5'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 3.5.0
121
+ - !ruby/object:Gem::Dependency
122
+ name: rubocop
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: 0.53.0
128
+ type: :development
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: 0.53.0
135
+ - !ruby/object:Gem::Dependency
136
+ name: simplecov
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 0.12.0
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: 0.12.0
149
+ description: RequestHeaderLogger Allows you to tag logs with RequestHeader flags.
150
+ email:
151
+ - wshihadh@gmail.com
152
+ executables:
153
+ - travis
154
+ extensions: []
155
+ extra_rdoc_files: []
156
+ files:
157
+ - ".gitignore"
158
+ - ".rubocop.yml"
159
+ - ".ruby-version"
160
+ - ".travis.yml"
161
+ - Gemfile
162
+ - Gemfile.lock
163
+ - LICENSE.txt
164
+ - README.md
165
+ - Rakefile
166
+ - bin/travis
167
+ - lib/request_headers_logger.rb
168
+ - lib/request_headers_logger/delayed_job/delayed_job.rb
169
+ - lib/request_headers_logger/delayed_job/performable_method.rb
170
+ - lib/request_headers_logger/delayed_job/request_header_delayed_plugin.rb
171
+ - lib/request_headers_logger/version.rb
172
+ - request_headers_logger.gemspec
173
+ - spec/delayed_job/performable_method_spec.rb
174
+ - spec/request_headers_logger_spec.rb
175
+ - spec/spec_helper.rb
176
+ - spec/support/mock_dj_user.rb
177
+ homepage: https://github.com/wshihadeh/request_headers_logger
178
+ licenses:
179
+ - MIT
180
+ metadata: {}
181
+ post_install_message:
182
+ rdoc_options: []
183
+ require_paths:
184
+ - lib
185
+ required_ruby_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ requirements: []
196
+ rubyforge_project:
197
+ rubygems_version: 2.5.2
198
+ signing_key:
199
+ specification_version: 4
200
+ summary: RequestHeaderLogger Allows you to tag logs with RequestHeader flags.
201
+ test_files:
202
+ - spec/delayed_job/performable_method_spec.rb
203
+ - spec/request_headers_logger_spec.rb
204
+ - spec/spec_helper.rb
205
+ - spec/support/mock_dj_user.rb