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.
- checksums.yaml +5 -5
- data/.travis.yml +8 -38
- data/CHANGELOG.md +9 -0
- data/README.md +30 -284
- data/Rakefile +78 -0
- data/lib/timber.rb +6 -6
- data/lib/timber/config.rb +1 -83
- data/lib/timber/config/integrations.rb +1 -47
- data/lib/timber/context.rb +3 -24
- data/lib/timber/contexts.rb +2 -30
- data/lib/timber/contexts/http.rb +16 -36
- data/lib/timber/contexts/release.rb +12 -23
- data/lib/timber/contexts/runtime.rb +9 -36
- data/lib/timber/contexts/session.rb +8 -21
- data/lib/timber/contexts/system.rb +9 -16
- data/lib/timber/contexts/user.rb +13 -33
- data/lib/timber/current_context.rb +16 -78
- data/lib/timber/event.rb +12 -9
- data/lib/timber/events.rb +1 -33
- data/lib/timber/events/controller_call.rb +20 -31
- data/lib/timber/events/error.rb +18 -26
- data/lib/timber/events/exception.rb +1 -0
- data/lib/timber/events/sql_query.rb +14 -24
- data/lib/timber/events/template_render.rb +13 -24
- data/lib/timber/integration.rb +1 -1
- data/lib/timber/integrator.rb +1 -1
- data/lib/timber/log_devices/http.rb +98 -19
- data/lib/timber/log_entry.rb +6 -24
- data/lib/timber/logger.rb +5 -14
- data/lib/timber/util.rb +1 -6
- data/lib/timber/util/non_nil_hash_builder.rb +3 -1
- data/lib/timber/version.rb +1 -1
- data/spec/README.md +2 -8
- data/spec/spec_helper.rb +0 -7
- data/spec/support/timber.rb +1 -3
- data/spec/timber/current_context_spec.rb +12 -50
- data/spec/timber/events/controller_call_spec.rb +4 -4
- data/spec/timber/events/error_spec.rb +4 -9
- data/spec/timber/log_devices/http_spec.rb +26 -2
- data/spec/timber/log_entry_spec.rb +12 -6
- data/spec/timber/logger_spec.rb +27 -68
- data/timber.gemspec +1 -1
- metadata +5 -139
- data/gemfiles/rails-3.0.gemfile +0 -5
- data/gemfiles/rails-3.1.gemfile +0 -5
- data/gemfiles/rails-3.2.gemfile +0 -5
- data/gemfiles/rails-4.0.gemfile +0 -9
- data/gemfiles/rails-4.1.gemfile +0 -9
- data/gemfiles/rails-4.2.gemfile +0 -9
- data/gemfiles/rails-5.0.gemfile +0 -9
- data/gemfiles/rails-5.1.gemfile +0 -9
- data/gemfiles/rails-edge.gemfile +0 -7
- data/lib/timber/cli.rb +0 -60
- data/lib/timber/cli/api.rb +0 -183
- data/lib/timber/cli/api/application.rb +0 -34
- data/lib/timber/cli/config_file.rb +0 -71
- data/lib/timber/cli/file_helper.rb +0 -53
- data/lib/timber/cli/installer.rb +0 -70
- data/lib/timber/cli/installers.rb +0 -102
- data/lib/timber/cli/installers/config_file.rb +0 -51
- data/lib/timber/cli/installers/other.rb +0 -59
- data/lib/timber/cli/installers/rails.rb +0 -225
- data/lib/timber/cli/installers/root.rb +0 -116
- data/lib/timber/cli/io.rb +0 -100
- data/lib/timber/cli/io/ansi.rb +0 -22
- data/lib/timber/cli/io/messages.rb +0 -198
- data/lib/timber/cli/os_helper.rb +0 -74
- data/lib/timber/config/integrations/rack.rb +0 -74
- data/lib/timber/contexts/custom.rb +0 -44
- data/lib/timber/contexts/organization.rb +0 -48
- data/lib/timber/events/custom.rb +0 -53
- data/lib/timber/events/http_request.rb +0 -71
- data/lib/timber/events/http_response.rb +0 -81
- data/lib/timber/frameworks.rb +0 -19
- data/lib/timber/frameworks/rails.rb +0 -27
- data/lib/timber/integrations.rb +0 -29
- data/lib/timber/integrations/action_controller.rb +0 -18
- data/lib/timber/integrations/action_controller/log_subscriber.rb +0 -27
- data/lib/timber/integrations/action_controller/log_subscriber/timber_log_subscriber.rb +0 -46
- data/lib/timber/integrations/action_dispatch.rb +0 -23
- data/lib/timber/integrations/action_dispatch/debug_exceptions.rb +0 -53
- data/lib/timber/integrations/action_view.rb +0 -18
- data/lib/timber/integrations/action_view/log_subscriber.rb +0 -27
- data/lib/timber/integrations/action_view/log_subscriber/timber_log_subscriber.rb +0 -83
- data/lib/timber/integrations/active_record.rb +0 -18
- data/lib/timber/integrations/active_record/log_subscriber.rb +0 -26
- data/lib/timber/integrations/active_record/log_subscriber/timber_log_subscriber.rb +0 -53
- data/lib/timber/integrations/rack.rb +0 -27
- data/lib/timber/integrations/rack/error_event.rb +0 -64
- data/lib/timber/integrations/rack/http_context.rb +0 -27
- data/lib/timber/integrations/rack/http_events.rb +0 -210
- data/lib/timber/integrations/rack/middleware.rb +0 -28
- data/lib/timber/integrations/rack/session_context.rb +0 -65
- data/lib/timber/integrations/rack/user_context.rb +0 -135
- data/lib/timber/integrations/rails.rb +0 -22
- data/lib/timber/integrations/rails/rack_logger.rb +0 -60
- data/lib/timber/overrides.rb +0 -12
- data/lib/timber/overrides/active_support_3_tagged_logging.rb +0 -111
- data/lib/timber/overrides/active_support_buffered_logger.rb +0 -22
- data/lib/timber/overrides/active_support_tagged_logging.rb +0 -66
- data/lib/timber/overrides/lograge.rb +0 -18
- data/lib/timber/overrides/rails_stdout_logging.rb +0 -21
- data/lib/timber/util/active_support_log_subscriber.rb +0 -37
- data/lib/timber/util/attribute_normalizer.rb +0 -89
- data/lib/timber/util/hash.rb +0 -90
- data/lib/timber/util/request.rb +0 -72
- data/lib/timber/util/struct.rb +0 -16
- data/spec/rails/tagged_logging_spec.rb +0 -44
- data/spec/support/action_controller.rb +0 -8
- data/spec/support/active_record.rb +0 -32
- data/spec/support/rails.rb +0 -67
- data/spec/support/rails/templates/_partial.html +0 -1
- data/spec/support/rails/templates/template.html +0 -1
- data/spec/timber/cli/config_file_spec.rb +0 -26
- data/spec/timber/cli/installers/config_file_spec.rb +0 -36
- data/spec/timber/cli/installers/other_spec.rb +0 -49
- data/spec/timber/cli/installers/rails_spec.rb +0 -364
- data/spec/timber/cli/installers/root_spec.rb +0 -73
- data/spec/timber/config_spec.rb +0 -28
- data/spec/timber/contexts/custom_spec.rb +0 -11
- data/spec/timber/contexts/organization_spec.rb +0 -11
- data/spec/timber/contexts/runtime_spec.rb +0 -11
- data/spec/timber/contexts/system_spec.rb +0 -11
- data/spec/timber/contexts/user_spec.rb +0 -11
- data/spec/timber/contexts_spec.rb +0 -49
- data/spec/timber/event_spec.rb +0 -10
- data/spec/timber/events/custom_spec.rb +0 -36
- data/spec/timber/events/http_request_spec.rb +0 -32
- data/spec/timber/events/http_response_spec.rb +0 -12
- data/spec/timber/events_spec.rb +0 -55
- data/spec/timber/integrations/action_controller/log_subscriber_spec.rb +0 -55
- data/spec/timber/integrations/action_dispatch/debug_exceptions_spec.rb +0 -53
- data/spec/timber/integrations/action_view/log_subscriber_spec.rb +0 -115
- data/spec/timber/integrations/active_record/log_subscriber_spec.rb +0 -46
- data/spec/timber/integrations/rack/error_event_spec.rb +0 -63
- data/spec/timber/integrations/rack/http_context_spec.rb +0 -60
- data/spec/timber/integrations/rack/http_events_spec.rb +0 -101
- data/spec/timber/integrations/rack/session_context_spec.rb +0 -62
- data/spec/timber/integrations/rails/rack_logger_spec.rb +0 -58
- data/spec/timber/util/attribute_normalizer_spec.rb +0 -90
- data/spec/timber/util/hash_spec.rb +0 -30
- 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
|