timber 3.0.0 → 3.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 +4 -4
- data/CHANGELOG.md +12 -2
- data/README.md +13 -1
- data/UPGRADING.md +48 -0
- data/lib/timber/current_context.rb +40 -0
- data/lib/timber/version.rb +1 -1
- data/spec/timber/current_context_spec.rb +21 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d765ddddb68b5b6af092b021c1e0971bf4979ae93f8c85104c7bddefea7fa30
|
4
|
+
data.tar.gz: 156ec4acdf3aa23ffcc87d2b6efaeb260dd5dc191905dbceff76a05eef273adb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6f2df759bf0545435c7b52c7673871f212a31e00491e90c88ed672380ce344b69c700af3d2757272c6d01b4f722f0ee1c553b9012ac817173a3d5aef5b6dc52
|
7
|
+
data.tar.gz: 5bac442f91f99b0a7aaa9f27a6f75ea4a8d197abd68f1860a59f92a220ae817450c9f363ed2b52808602e90180bcf1e13a40ea02dca2b5d58d168b8820b2e6fa
|
data/CHANGELOG.md
CHANGED
@@ -7,11 +7,19 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [3.0.1] - 2019-04-10
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
|
14
|
+
- Fixed a bug where `Timber.with_context` was calling a non-existent method. [#205](https://github.com/timberio/timber-ruby/pull/205)
|
15
|
+
|
16
|
+
## [3.0.0] - 2019-03-28
|
17
|
+
|
10
18
|
### Changed
|
11
19
|
|
12
20
|
- Timber's Rails integration has been moved to the optional `timber_rails` gem: https://github.com/timberio/timber-ruby-rails
|
13
21
|
- Timber's Rack integration has been moved to the optional `timber_rack` gem: https://github.com/timberio/timber-ruby-rack
|
14
|
-
- Custom events are no longer nested under the `custom.event` key, events are now merged into the root
|
22
|
+
- Custom events are no longer nested under the `custom.event` key, events are now merged into the root document.
|
15
23
|
- Custom contexts are no longer nested under the `context.custom` key, contexts are not part of the top-level `context` document.
|
16
24
|
- The Timber JSON schema (`$shema` key) was dropped since the Timber.io service no longer requires a strict schema (structured data in any shape is accepted).
|
17
25
|
- `Timber::LogDevices::HTTP#initialize` now takes a second `source_id` parameter. Timber's new API keys are no longer Timber source specific and therefore require a `source_id` to be specificed. Ex: `Timber::LogDevices::HTTP.new('api_key', 'source_id')`.
|
@@ -134,7 +142,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
134
142
|
instead of applying back pressure.
|
135
143
|
|
136
144
|
|
137
|
-
[Unreleased]: https://github.com/timberio/timber-ruby/compare/
|
145
|
+
[Unreleased]: https://github.com/timberio/timber-ruby/compare/v3.0.1...HEAD
|
146
|
+
[3.0.1]: https://github.com/timberio/timber-ruby/compare/v3.0.0...v3.0.1
|
147
|
+
[3.0.0]: https://github.com/timberio/timber-ruby/compare/v2.6.1...v3.0.0
|
138
148
|
[2.6.1]: https://github.com/timberio/timber-ruby/compare/v2.6.0...v2.6.1
|
139
149
|
[2.6.0]: https://github.com/timberio/timber-ruby/compare/v2.5.1...v2.6.0
|
140
150
|
[2.5.1]: https://github.com/timberio/timber-ruby/compare/v2.5.0...v2.5.1
|
data/README.md
CHANGED
@@ -26,7 +26,19 @@ important stats easier than ever.
|
|
26
26
|
|
27
27
|
---
|
28
28
|
|
29
|
-
|
29
|
+
### Features
|
30
|
+
|
31
|
+
* Simple integration. Exposes the same API as the Ruby Logger.
|
32
|
+
* Performant, light-weight, and thoughtful design.
|
33
|
+
* Support for structured logging.
|
34
|
+
* Support for context.
|
35
|
+
* Automatic context capturing.
|
36
|
+
* Integrates with popular 3rd party libraries, such as Rails and Rack.
|
37
|
+
|
38
|
+
---
|
39
|
+
|
40
|
+
### Get Started
|
41
|
+
|
30
42
|
* **[Installation](https://docs.timber.io/setup/languages/ruby#installation)**
|
31
43
|
* **[Configuration](https://docs.timber.io/setup/languages/ruby#configuration)**
|
32
44
|
* **[Usage](https://docs.timber.io/setup/languages/ruby#usage)**
|
data/UPGRADING.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# Upgrading
|
2
|
+
|
3
|
+
## 2.x to 3.x
|
4
|
+
|
5
|
+
### Overview
|
6
|
+
|
7
|
+
We're excited to announce the 3.X line of Timber for Ruby! We've been making big
|
8
|
+
strides with Timber as a whole and 3.X represents a lot of big improvements:
|
9
|
+
|
10
|
+
- A lighter code base
|
11
|
+
- Better performance
|
12
|
+
- A simpler, better install process and strategy
|
13
|
+
- New docs: https://docs.timber.io/setup/languages/ruby
|
14
|
+
- New integration libraries focused on the specific library they're integrating with
|
15
|
+
|
16
|
+
- https://github.com/timberio/timber-ruby-rack
|
17
|
+
- https://github.com/timberio/timber-ruby-rails
|
18
|
+
|
19
|
+
Outside of that, 3.0 does not introduce any API changes, and is forward compatbile
|
20
|
+
in that regard. This means actions like setting context and logging structured data
|
21
|
+
will continue to work as expected.
|
22
|
+
|
23
|
+
### Rails
|
24
|
+
|
25
|
+
If you're on Rails, the upgrade process is simple. Simply add the `timber-rails`
|
26
|
+
gem to your `Gemfile`:
|
27
|
+
|
28
|
+
```
|
29
|
+
gem 'timber-rails', '~> 1.0'
|
30
|
+
```
|
31
|
+
|
32
|
+
That's it! Everything is taken care of you via a Rails initializer.
|
33
|
+
|
34
|
+
More info: https://docs.timber.io/setup/languages/ruby/integrations/rack
|
35
|
+
|
36
|
+
### Non-rails
|
37
|
+
|
38
|
+
If you're not on rails, and you're using `Rack`, you'll want to install the
|
39
|
+
`timber-rack` gem by adding it to your `Gemfile`:
|
40
|
+
|
41
|
+
```
|
42
|
+
gem 'timber-rack', '~> 1.0'
|
43
|
+
```
|
44
|
+
|
45
|
+
That's it! The middleware class names are still the same and should not
|
46
|
+
require any altering.
|
47
|
+
|
48
|
+
More info: https://docs.timber.io/setup/languages/ruby/integrations/rack
|
@@ -38,6 +38,11 @@ module Timber
|
|
38
38
|
def reset(*args)
|
39
39
|
instance.reset(*args)
|
40
40
|
end
|
41
|
+
|
42
|
+
# Convenience method for {CurrentContext#with}. See {CurrentContext#with} for more info.
|
43
|
+
def with(*args, &block)
|
44
|
+
instance.with(*args, &block)
|
45
|
+
end
|
41
46
|
end
|
42
47
|
|
43
48
|
# Adds contexts but does not remove them. See {#with} for automatic maintenance and {#remove}
|
@@ -68,6 +73,12 @@ module Timber
|
|
68
73
|
self
|
69
74
|
end
|
70
75
|
|
76
|
+
def replace(hash)
|
77
|
+
@hash = hash
|
78
|
+
expire_cache!
|
79
|
+
self
|
80
|
+
end
|
81
|
+
|
71
82
|
# Resets the context to be blank. Use this carefully! This will remove *any* context,
|
72
83
|
# include context that is automatically included with Timber.
|
73
84
|
def reset
|
@@ -83,6 +94,35 @@ module Timber
|
|
83
94
|
@snapshot ||= hash.clone
|
84
95
|
end
|
85
96
|
|
97
|
+
# Adds a context and then removes it when the block is finished executing.
|
98
|
+
#
|
99
|
+
# @note Because context is included with every log line, it is recommended that you limit this
|
100
|
+
# to only neccessary data.
|
101
|
+
#
|
102
|
+
# @example Adding a custom context
|
103
|
+
# Timber::CurrentContext.with({build: {version: "1.0.0"}}) do
|
104
|
+
# # ... anything logged here will include the context ...
|
105
|
+
# end
|
106
|
+
#
|
107
|
+
# @note Any custom context needs to have a single root key to be valid. i.e. instead of:
|
108
|
+
# Timber::CurrentContext.with(job_id: "123", job_name: "Refresh User Account")
|
109
|
+
#
|
110
|
+
# do
|
111
|
+
#
|
112
|
+
# Timber::CurrentContext.with(job: {job_id: "123", job_name: "Refresh User Account"})
|
113
|
+
#
|
114
|
+
# @example Adding multiple contexts
|
115
|
+
# Timber::CurrentContext.with(context1, context2) { ... }
|
116
|
+
def with(*objects)
|
117
|
+
old_hash = hash.clone
|
118
|
+
begin
|
119
|
+
add(*objects)
|
120
|
+
yield
|
121
|
+
ensure
|
122
|
+
replace(old_hash)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
86
126
|
private
|
87
127
|
# The internal hash that is maintained. Use {#with} and {#add} for hash maintenance.
|
88
128
|
def hash
|
data/lib/timber/version.rb
CHANGED
@@ -89,4 +89,25 @@ describe Timber::CurrentContext do
|
|
89
89
|
expect(described_class.instance.send(:hash)[:build]).to be_nil
|
90
90
|
end
|
91
91
|
end
|
92
|
+
|
93
|
+
describe ".with" do
|
94
|
+
it "should merge the context and cleanup on block exit" do
|
95
|
+
expect(described_class.instance.send(:hash)[:build]).to be_nil
|
96
|
+
|
97
|
+
described_class.with({build: {version: "1.0.0"}}) do
|
98
|
+
expect(described_class.instance.send(:hash)[:build]).to eq({:version=>"1.0.0"})
|
99
|
+
|
100
|
+
described_class.with({testing: {key: "value"}}) do
|
101
|
+
expect(described_class.instance.send(:hash)[:build]).to eq({:version=>"1.0.0"})
|
102
|
+
expect(described_class.instance.send(:hash)[:testing]).to eq({:key=>"value"})
|
103
|
+
end
|
104
|
+
|
105
|
+
expect(described_class.instance.send(:hash)[:build]).to eq({:version=>"1.0.0"})
|
106
|
+
expect(described_class.instance.send(:hash)[:testing]).to be_nil
|
107
|
+
end
|
108
|
+
|
109
|
+
expect(described_class.instance.send(:hash)[:build]).to be_nil
|
110
|
+
expect(described_class.instance.send(:hash)[:testing]).to be_nil
|
111
|
+
end
|
112
|
+
end
|
92
113
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Timber Technologies, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -153,6 +153,7 @@ files:
|
|
153
153
|
- LICENSE.md
|
154
154
|
- README.md
|
155
155
|
- Rakefile
|
156
|
+
- UPGRADING.md
|
156
157
|
- bin/timber
|
157
158
|
- lib/timber.rb
|
158
159
|
- lib/timber/config.rb
|