timber 2.6.2 → 3.0.0

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.
Files changed (142) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +8 -38
  3. data/CHANGELOG.md +9 -0
  4. data/README.md +30 -284
  5. data/Rakefile +78 -0
  6. data/lib/timber.rb +6 -6
  7. data/lib/timber/config.rb +1 -83
  8. data/lib/timber/config/integrations.rb +1 -47
  9. data/lib/timber/context.rb +3 -24
  10. data/lib/timber/contexts.rb +2 -30
  11. data/lib/timber/contexts/http.rb +16 -36
  12. data/lib/timber/contexts/release.rb +12 -23
  13. data/lib/timber/contexts/runtime.rb +9 -36
  14. data/lib/timber/contexts/session.rb +8 -21
  15. data/lib/timber/contexts/system.rb +9 -16
  16. data/lib/timber/contexts/user.rb +13 -33
  17. data/lib/timber/current_context.rb +16 -78
  18. data/lib/timber/event.rb +12 -9
  19. data/lib/timber/events.rb +1 -33
  20. data/lib/timber/events/controller_call.rb +20 -31
  21. data/lib/timber/events/error.rb +18 -26
  22. data/lib/timber/events/exception.rb +1 -0
  23. data/lib/timber/events/sql_query.rb +14 -24
  24. data/lib/timber/events/template_render.rb +13 -24
  25. data/lib/timber/integration.rb +1 -1
  26. data/lib/timber/integrator.rb +1 -1
  27. data/lib/timber/log_devices/http.rb +98 -19
  28. data/lib/timber/log_entry.rb +6 -24
  29. data/lib/timber/logger.rb +5 -14
  30. data/lib/timber/util.rb +1 -6
  31. data/lib/timber/util/non_nil_hash_builder.rb +3 -1
  32. data/lib/timber/version.rb +1 -1
  33. data/spec/README.md +2 -8
  34. data/spec/spec_helper.rb +0 -7
  35. data/spec/support/timber.rb +1 -3
  36. data/spec/timber/current_context_spec.rb +12 -50
  37. data/spec/timber/events/controller_call_spec.rb +4 -4
  38. data/spec/timber/events/error_spec.rb +4 -9
  39. data/spec/timber/log_devices/http_spec.rb +26 -2
  40. data/spec/timber/log_entry_spec.rb +12 -6
  41. data/spec/timber/logger_spec.rb +27 -68
  42. data/timber.gemspec +1 -1
  43. metadata +5 -139
  44. data/gemfiles/rails-3.0.gemfile +0 -5
  45. data/gemfiles/rails-3.1.gemfile +0 -5
  46. data/gemfiles/rails-3.2.gemfile +0 -5
  47. data/gemfiles/rails-4.0.gemfile +0 -9
  48. data/gemfiles/rails-4.1.gemfile +0 -9
  49. data/gemfiles/rails-4.2.gemfile +0 -9
  50. data/gemfiles/rails-5.0.gemfile +0 -9
  51. data/gemfiles/rails-5.1.gemfile +0 -9
  52. data/gemfiles/rails-edge.gemfile +0 -7
  53. data/lib/timber/cli.rb +0 -60
  54. data/lib/timber/cli/api.rb +0 -183
  55. data/lib/timber/cli/api/application.rb +0 -34
  56. data/lib/timber/cli/config_file.rb +0 -71
  57. data/lib/timber/cli/file_helper.rb +0 -53
  58. data/lib/timber/cli/installer.rb +0 -70
  59. data/lib/timber/cli/installers.rb +0 -102
  60. data/lib/timber/cli/installers/config_file.rb +0 -51
  61. data/lib/timber/cli/installers/other.rb +0 -59
  62. data/lib/timber/cli/installers/rails.rb +0 -225
  63. data/lib/timber/cli/installers/root.rb +0 -116
  64. data/lib/timber/cli/io.rb +0 -100
  65. data/lib/timber/cli/io/ansi.rb +0 -22
  66. data/lib/timber/cli/io/messages.rb +0 -198
  67. data/lib/timber/cli/os_helper.rb +0 -74
  68. data/lib/timber/config/integrations/rack.rb +0 -74
  69. data/lib/timber/contexts/custom.rb +0 -44
  70. data/lib/timber/contexts/organization.rb +0 -48
  71. data/lib/timber/events/custom.rb +0 -53
  72. data/lib/timber/events/http_request.rb +0 -71
  73. data/lib/timber/events/http_response.rb +0 -81
  74. data/lib/timber/frameworks.rb +0 -19
  75. data/lib/timber/frameworks/rails.rb +0 -27
  76. data/lib/timber/integrations.rb +0 -29
  77. data/lib/timber/integrations/action_controller.rb +0 -18
  78. data/lib/timber/integrations/action_controller/log_subscriber.rb +0 -27
  79. data/lib/timber/integrations/action_controller/log_subscriber/timber_log_subscriber.rb +0 -46
  80. data/lib/timber/integrations/action_dispatch.rb +0 -23
  81. data/lib/timber/integrations/action_dispatch/debug_exceptions.rb +0 -53
  82. data/lib/timber/integrations/action_view.rb +0 -18
  83. data/lib/timber/integrations/action_view/log_subscriber.rb +0 -27
  84. data/lib/timber/integrations/action_view/log_subscriber/timber_log_subscriber.rb +0 -83
  85. data/lib/timber/integrations/active_record.rb +0 -18
  86. data/lib/timber/integrations/active_record/log_subscriber.rb +0 -26
  87. data/lib/timber/integrations/active_record/log_subscriber/timber_log_subscriber.rb +0 -53
  88. data/lib/timber/integrations/rack.rb +0 -27
  89. data/lib/timber/integrations/rack/error_event.rb +0 -64
  90. data/lib/timber/integrations/rack/http_context.rb +0 -27
  91. data/lib/timber/integrations/rack/http_events.rb +0 -210
  92. data/lib/timber/integrations/rack/middleware.rb +0 -28
  93. data/lib/timber/integrations/rack/session_context.rb +0 -65
  94. data/lib/timber/integrations/rack/user_context.rb +0 -135
  95. data/lib/timber/integrations/rails.rb +0 -22
  96. data/lib/timber/integrations/rails/rack_logger.rb +0 -60
  97. data/lib/timber/overrides.rb +0 -12
  98. data/lib/timber/overrides/active_support_3_tagged_logging.rb +0 -111
  99. data/lib/timber/overrides/active_support_buffered_logger.rb +0 -22
  100. data/lib/timber/overrides/active_support_tagged_logging.rb +0 -66
  101. data/lib/timber/overrides/lograge.rb +0 -18
  102. data/lib/timber/overrides/rails_stdout_logging.rb +0 -21
  103. data/lib/timber/util/active_support_log_subscriber.rb +0 -37
  104. data/lib/timber/util/attribute_normalizer.rb +0 -89
  105. data/lib/timber/util/hash.rb +0 -90
  106. data/lib/timber/util/request.rb +0 -72
  107. data/lib/timber/util/struct.rb +0 -16
  108. data/spec/rails/tagged_logging_spec.rb +0 -44
  109. data/spec/support/action_controller.rb +0 -8
  110. data/spec/support/active_record.rb +0 -32
  111. data/spec/support/rails.rb +0 -67
  112. data/spec/support/rails/templates/_partial.html +0 -1
  113. data/spec/support/rails/templates/template.html +0 -1
  114. data/spec/timber/cli/config_file_spec.rb +0 -26
  115. data/spec/timber/cli/installers/config_file_spec.rb +0 -36
  116. data/spec/timber/cli/installers/other_spec.rb +0 -49
  117. data/spec/timber/cli/installers/rails_spec.rb +0 -364
  118. data/spec/timber/cli/installers/root_spec.rb +0 -73
  119. data/spec/timber/config_spec.rb +0 -28
  120. data/spec/timber/contexts/custom_spec.rb +0 -11
  121. data/spec/timber/contexts/organization_spec.rb +0 -11
  122. data/spec/timber/contexts/runtime_spec.rb +0 -11
  123. data/spec/timber/contexts/system_spec.rb +0 -11
  124. data/spec/timber/contexts/user_spec.rb +0 -11
  125. data/spec/timber/contexts_spec.rb +0 -49
  126. data/spec/timber/event_spec.rb +0 -10
  127. data/spec/timber/events/custom_spec.rb +0 -36
  128. data/spec/timber/events/http_request_spec.rb +0 -32
  129. data/spec/timber/events/http_response_spec.rb +0 -12
  130. data/spec/timber/events_spec.rb +0 -55
  131. data/spec/timber/integrations/action_controller/log_subscriber_spec.rb +0 -55
  132. data/spec/timber/integrations/action_dispatch/debug_exceptions_spec.rb +0 -53
  133. data/spec/timber/integrations/action_view/log_subscriber_spec.rb +0 -115
  134. data/spec/timber/integrations/active_record/log_subscriber_spec.rb +0 -46
  135. data/spec/timber/integrations/rack/error_event_spec.rb +0 -63
  136. data/spec/timber/integrations/rack/http_context_spec.rb +0 -60
  137. data/spec/timber/integrations/rack/http_events_spec.rb +0 -101
  138. data/spec/timber/integrations/rack/session_context_spec.rb +0 -62
  139. data/spec/timber/integrations/rails/rack_logger_spec.rb +0 -58
  140. data/spec/timber/util/attribute_normalizer_spec.rb +0 -90
  141. data/spec/timber/util/hash_spec.rb +0 -30
  142. data/spec/timber/util/request_spec.rb +0 -10
@@ -1,58 +0,0 @@
1
- require "spec_helper"
2
-
3
- if defined?(::Rails)
4
- describe Timber::Integrations::Rails::RackLogger do
5
- describe described_class::InstanceMethods do
6
- let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
7
- let(:io) { StringIO.new }
8
- let(:logger) do
9
- logger = Timber::Logger.new(io)
10
- logger.level = ::Logger::INFO
11
- logger
12
- end
13
-
14
- around(:each) do |example|
15
- class RailsRackLoggerController < ActionController::Base
16
- layout nil
17
-
18
- def index
19
- render json: {}
20
- end
21
-
22
- def method_for_action(action_name)
23
- action_name
24
- end
25
- end
26
-
27
- ::RailsApp.routes.draw do
28
- get '/rails_rack_logger' => 'rails_rack_logger#index'
29
- end
30
-
31
- with_rails_logger(logger) do
32
- Timecop.freeze(time) { example.run }
33
- end
34
-
35
- Object.send(:remove_const, :RailsRackLoggerController)
36
- end
37
-
38
- describe "#started_request_message" do
39
- it "should mute the default rails logs" do
40
- allow(::Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) # Rails 3.2.X
41
-
42
- dispatch_rails_request("/rails_rack_logger")
43
-
44
- lines = clean_lines(io.string.split("\n"))
45
- expect(lines.length).to eq(3)
46
- expect(lines[0]).to start_with("Started GET \"/rails_rack_logger\" @metadata")
47
- expect(lines[1]).to start_with("Processing by RailsRackLoggerController#index as HTML @metadata")
48
- expect(lines[2]).to start_with("Completed 200 OK in 0.0ms @metadata")
49
- end
50
- end
51
- end
52
-
53
- # Remove blank lines since Rails does this to space out requests in the logs
54
- def clean_lines(lines)
55
- lines.select { |line| !line.start_with?(" @metadat") }
56
- end
57
- end
58
- end
@@ -1,90 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Timber::Util::AttributeNormalizer, :rails_23 => true do
4
- describe "#fetch" do
5
- it "should return nil values" do
6
- normalizer = described_class.new({:key => nil})
7
- v = normalizer.fetch(:key, :string)
8
- expect(v).to be_nil
9
- end
10
-
11
- it "should nillify blank strings" do
12
- normalizer = described_class.new({:key => ""})
13
- v = normalizer.fetch(:key, :string)
14
- expect(v).to be_nil
15
- end
16
-
17
- it "should nillify empty arrays" do
18
- normalizer = described_class.new({:key => []})
19
- v = normalizer.fetch(:key, :string)
20
- expect(v).to be_nil
21
- end
22
-
23
- it "should nillify empty hashes" do
24
- normalizer = described_class.new({:key => {}})
25
- v = normalizer.fetch(:key, :string)
26
- expect(v).to be_nil
27
- end
28
-
29
- it "should raise an error for non arrays" do
30
- normalizer = described_class.new({:key => "value"})
31
- expect(lambda { normalizer.fetch(:key, :array) }).to raise_error(ArgumentError)
32
- end
33
-
34
- it "should return arrays" do
35
- normalizer = described_class.new({:key => [1]})
36
- v = normalizer.fetch(:key, :array)
37
- expect(v).to eq([1])
38
- end
39
-
40
- it "should return a float with the correct precision" do
41
- normalizer = described_class.new({:key => 1.111111})
42
- v = normalizer.fetch(:key, :float, :precision => 2)
43
- expect(v).to eq(1.11)
44
- end
45
-
46
- it "should sanitize a hash" do
47
- normalizer = described_class.new({:key => {:PASSWORD => "password"}})
48
- v = normalizer.fetch(:key, :hash, :sanitize => ["password"])
49
- expect(v).to eq({"password"=>"[sanitized]"})
50
- end
51
-
52
- it "should normalize encodings" do
53
- value = "test".force_encoding('ASCII-8BIT')
54
- normalizer = described_class.new({:key => {:key => value}})
55
- v = normalizer.fetch(:key, :hash)
56
- expect(v[:key].encoding).to eq(::Encoding::UTF_8)
57
- end
58
-
59
- it "should drop large binaries" do
60
- value = ("a" * 1_001).force_encoding('ASCII-8BIT')
61
- normalizer = described_class.new({:key => {:key => value}})
62
- v = normalizer.fetch(:key, :hash)
63
- expect(v).to be_nil
64
- end
65
-
66
- it "should return an integer" do
67
- normalizer = described_class.new({:key => "1"})
68
- v = normalizer.fetch(:key, :integer)
69
- expect(v).to eq(1)
70
- end
71
-
72
- it "should limit a string" do
73
- normalizer = described_class.new({:key => "aaa"})
74
- v = normalizer.fetch(:key, :string, :limit => 1)
75
- expect(v).to eq("a")
76
- end
77
-
78
- it "should upcase a string" do
79
- normalizer = described_class.new({:key => "aaa"})
80
- v = normalizer.fetch(:key, :string, :upcase => true)
81
- expect(v).to eq("AAA")
82
- end
83
-
84
- it "should return a symbol" do
85
- normalizer = described_class.new({:key => "sym"})
86
- v = normalizer.fetch(:key, :symbol)
87
- expect(v).to eq(:sym)
88
- end
89
- end
90
- end
@@ -1,30 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Timber::Util::Hash, :rails_23 => true do
4
- describe "jsonify" do
5
- it "should return the original for simple 1 level hash" do
6
- original = { a: "a", b: 1, c: 123.11 }
7
- v = jsonify(original)
8
- expect(v).to eq(original)
9
- end
10
-
11
- it "should return the original when it's a multilevel hash but with supported values" do
12
- original = { a: "a", nested: { b: 1 } }
13
- v = jsonify(original)
14
- expect(v).to eq(original)
15
- end
16
-
17
- it "cuts out ASCII strings longer than 1000 characters from the hash" do
18
- file1 = ("a" * 1005).encode("ASCII-8BIT")
19
- file2 = ("x" * 1010).encode("ASCII-8BIT")
20
- original = { path: "abc", file: file1, nested: { path: "def", file: file2 } }
21
- v = jsonify(original)
22
- expect(v).to eq({ path: "abc", nested: { path: "def" } })
23
- end
24
-
25
- def jsonify(h)
26
- Timber::Util::Hash.jsonify(h)
27
- end
28
- end
29
-
30
- end
@@ -1,10 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Timber::Util::Request, :rails_23 => true do
4
- describe ".headers" do
5
- it "should ignore symbol keys" do
6
- req = described_class.new({test: "value"})
7
- expect(req.headers).to eq({})
8
- end
9
- end
10
- end