lumberjack_redis_device 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0bbc9ce42f70e40c813a3d446f7a185d876d5a1475179b9fb58286d0648f7293
4
- data.tar.gz: 790abe1f48c28198df3584184ac336a87ea399102f1f6b381786e16de40b114f
3
+ metadata.gz: 848ce30a84453889a51a97492666fdc53e1c5e8b8299a046814dfb4eaf28c110
4
+ data.tar.gz: 4e71adc0700954dd842963c0e09be7cdb1ae440c45673938f98cbcec86004bdd
5
5
  SHA512:
6
- metadata.gz: 2bde67b21c182c709faa85c6ee49b1b39afa063a61eee3563d3e02aaeaad4a98a07951eee02595d7296b155b3824db184272b9def616ff3238d3fa42c1010914
7
- data.tar.gz: 9150565938e10b012aeec942cc81d244280abfa01c91c117144ce8cd0c17749ef98736d4a68656369fc1a3dbc20bfc4393fd3fd6cd5ec8299ab434b016bab6c2
6
+ metadata.gz: 37057976e7025438f3d53798a43b977dd8534c5cecd1265edf66a5dc71c84facdb03d2e489eae1def40ca9335674edca82fec8507dda1f09344505d17bdfb9fd
7
+ data.tar.gz: 22dcfeacde23ef63f04a97c73e33f99790d18a3bec8c8a13c58891ba9a0e9366ec83131ba98a8c0da13a3c9f48b9e81eee3c0124f6b45b1501b0802929ce9e30
@@ -0,0 +1,12 @@
1
+ # Dependabot update strategy
2
+ version: 2
3
+ updates:
4
+ - package-ecosystem: bundler
5
+ directory: "/"
6
+ schedule:
7
+ interval: weekly
8
+ allow:
9
+ # Automatically keep all runtime dependencies updated
10
+ - dependency-name: "*"
11
+ dependency-type: "production"
12
+ versioning-strategy: lockfile-only
@@ -0,0 +1,70 @@
1
+ name: Continuous Integration
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - actions-*
8
+ pull_request:
9
+ branches-ignore:
10
+ - actions-*
11
+ workflow_dispatch:
12
+
13
+ env:
14
+ BUNDLE_CLEAN: "true"
15
+ BUNDLE_PATH: vendor/bundle
16
+ BUNDLE_JOBS: 3
17
+ BUNDLE_RETRY: 3
18
+
19
+ jobs:
20
+ build:
21
+ name: build ruby-${{ matrix.ruby }} ${{ matrix.appraisal }}
22
+ runs-on: ubuntu-latest
23
+ services:
24
+ redis:
25
+ image: redis
26
+ ports:
27
+ - 6379:6379
28
+ options: >-
29
+ --health-cmd "redis-cli ping"
30
+ --health-interval 10s
31
+ --health-timeout 5s
32
+ --health-retries 5
33
+ strategy:
34
+ fail-fast: false
35
+ matrix:
36
+ include:
37
+ - ruby: "ruby"
38
+ standardrb: true
39
+ yard: true
40
+ - ruby: "3.0"
41
+ appraisal: redis_5
42
+ - ruby: "2.7"
43
+ appraisal: redis_4
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+ - name: Set up Ruby ${{ matrix.ruby }}
47
+ uses: ruby/setup-ruby@v1
48
+ with:
49
+ ruby-version: "${{ matrix.ruby }}"
50
+ - name: Setup bundler
51
+ if: matrix.bundler != ''
52
+ run: |
53
+ gem uninstall bundler --all
54
+ gem install bundler --no-document --version ${{ matrix.bundler }}
55
+ - name: Set Appraisal bundle
56
+ if: matrix.appraisal != ''
57
+ run: |
58
+ echo "using gemfile gemfiles/${{ matrix.appraisal }}.gemfile"
59
+ bundle config set gemfile "gemfiles/${{ matrix.appraisal }}.gemfile"
60
+ - name: Install gems
61
+ run: |
62
+ bundle update
63
+ - name: Run Tests
64
+ run: bundle exec rake
65
+ - name: standardrb
66
+ if: matrix.standardrb == true
67
+ run: bundle exec standardrb
68
+ - name: yard
69
+ if: matrix.yard == true
70
+ run: bundle exec yard --fail-on-warning
data/.standard.yml ADDED
@@ -0,0 +1,10 @@
1
+ # I really just have issues with the automatic "semantic blocks"
2
+
3
+ ruby_version: 2.7
4
+
5
+ format: progress
6
+
7
+ ignore:
8
+ - 'spec/**/*':
9
+ - Lint/UselessAssignment
10
+ - Lint/Void
data/CHANGE_LOG.md CHANGED
@@ -1,3 +1,35 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## 1.1.0
8
+
9
+ ### Changed
10
+
11
+ - Bumped lumberjack version to >= 2.0.
12
+
13
+ ### Removed
14
+
15
+ - Removed support for Ruby < 2.7.
16
+ - Removed dependency on multi_json.
17
+
18
+ ## 1.0.2
19
+
20
+ ## Fixed
21
+
22
+ - Fixed return value from `exists` to always be a boolean regardless of the version of the redis gem being used.
23
+
24
+ ## 1.0.1
25
+
26
+ ### Added
27
+
28
+ - Add helper to test if log exists in redis or has been expired
29
+ - Add helper to get the timestamp of the last written log entry
30
+
1
31
  # 1.0.0
2
32
 
3
- * Initial release
33
+ ### Added
34
+
35
+ - Initial release
data/README.md CHANGED
@@ -1,11 +1,17 @@
1
1
  # Lumberjack Redis Device
2
2
 
3
- [![Build Status](https://travis-ci.org/bdurand/lumberjack_redis_device.svg?branch=master)](https://travis-ci.org/bdurand/lumberjack_redis_device)
4
- [![Maintainability](https://api.codeclimate.com/v1/badges/7785eba72f9a92b686b2/maintainability)](https://codeclimate.com/github/bdurand/lumberjack_redis_device/maintainability)
3
+ [![Continuous Integration](https://github.com/bdurand/lumberjack_redis_device/actions/workflows/continuous_integration.yml/badge.svg)](https://github.com/bdurand/lumberjack_redis_device/actions/workflows/continuous_integration.yml)
4
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
5
+ [![Gem Version](https://badge.fury.io/rb/lumberjack_redis_device.svg)](https://badge.fury.io/rb/lumberjack_redis_device)
5
6
 
6
7
  This is a simple reference implementation of a device for the [lumberjack](https://github.com/bdurand/lumberjack) to send logs to a data store.
7
8
 
8
- Log data will be stored in a Redis list. This will likely not scale to handle permanent or large log storage, but it can be useful as a temporary store in log shipment, or as a debug tool for seeing only recent log entries.
9
+ > [!WARNING]
10
+ > This gem is not intended for high volume production use. It is intended to be a simple way to expose a smallish volume of logs from a remote system via Redis.
11
+ >
12
+ > In a high traffic system, the logs will roll over too quickly to be useful.
13
+ >
14
+ > It can be useful as a temporary store in log shipment, or as a debug tool for seeing only recent log entries.
9
15
 
10
16
  The number of entries in the list can be capped with the `:limit` paramter on the constructor. An expiration time can also be set on the redis key as well with the `:ttl` parameter.
11
17
 
@@ -20,3 +26,37 @@ The log entries can then be read out again with the `read` method. The result wi
20
26
  ```ruby
21
27
  entries = device.read
22
28
  ```
29
+
30
+ ## Installation
31
+
32
+ Add this line to your application's Gemfile:
33
+
34
+ ```ruby
35
+ gem "lumberjack_redis_device"
36
+ ```
37
+
38
+ And then execute:
39
+ ```bash
40
+ $ bundle
41
+ ```
42
+
43
+ Or install it yourself as:
44
+ ```bash
45
+ $ gem install lumberjack_redis_device
46
+ ```
47
+
48
+ ## Contributing
49
+
50
+ Open a pull request on GitHub.
51
+
52
+ Please use the [standardrb](https://github.com/testdouble/standard) syntax and lint your code with `standardrb --fix` before submitting.
53
+
54
+ You'll need a redis server running to run the tests. You can spin one up using Docker:
55
+
56
+ ```bash
57
+ $ docker run --rm -p 6379:6379 redis
58
+ ```
59
+
60
+ ## License
61
+
62
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -0,0 +1,171 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "lumberjack"
4
+ require "redis"
5
+ require "json"
6
+
7
+ # Lumberjack logging framework with device support for Redis
8
+ module Lumberjack
9
+ # This Lumberjack device logs output to a redis list. The redis list will automatically truncate
10
+ # to a given size to prevent running out of memory on the server. This is not intended to be a
11
+ # scalable logging solution, but it can be useful as an additional logging tool to expose recent logs.
12
+ class RedisDevice < Device
13
+ VERSION = ::File.read(::File.join(__dir__, "..", "..", "VERSION")).strip.freeze
14
+
15
+ DeviceRegistry.add(:redis, self)
16
+
17
+ attr_reader :name, :ttl, :limit
18
+
19
+ # Create a device. The name will be used as the key for the log entries in redis.
20
+ #
21
+ # The redis object can either be a `Redis` instance or a block that yields a `Redis`
22
+ # instance.
23
+ #
24
+ # You can also specify a time to live in seconds (ttl) and set the limit for the size of the list.
25
+ def initialize(name:, redis:, limit: 10_000, ttl: nil)
26
+ @name = name
27
+ @redis = redis
28
+ @ttl = ttl.to_i
29
+ @limit = limit
30
+ end
31
+
32
+ # Write an entry to the list in redis
33
+ def write(entry)
34
+ data = entry_as_json(entry)
35
+ json = dump_json(data)
36
+ redis.multi do |transaction|
37
+ transaction.lpush(name, json)
38
+ transaction.ltrim(name, 0, limit - 1)
39
+ transaction.expire(name, ttl) if ttl && ttl > 0
40
+ end
41
+ end
42
+
43
+ # Read a set number of entries from the list. The result will be an array of
44
+ # Lumberjack::LogEntry objects.
45
+ def read(count = limit)
46
+ docs = redis.lrange(name, 0, count - 1)
47
+ docs.collect { |json| entry_from_json(json) }
48
+ end
49
+
50
+ # Return true if the logs exist in redis. Will return false if the
51
+ # logs have expired.
52
+ def exists?
53
+ retval = redis.exists(name)
54
+ if retval.is_a?(Integer)
55
+ retval = (retval > 0)
56
+ end
57
+ retval
58
+ end
59
+
60
+ # Return the timestamp of the last log entry.
61
+ def last_written_at
62
+ entry = read(1).first
63
+ entry&.time
64
+ end
65
+
66
+ # Get the datetime format used for formatting time values in log entries.
67
+ # @return [String, nil] the datetime format string, or nil if no custom format is set
68
+ def datetime_format
69
+ @time_formatter&.format
70
+ end
71
+
72
+ # Set the datetime format for formatting time values in log entries.
73
+ # @param format [String] the datetime format string to use for time formatting
74
+ def datetime_format=(format)
75
+ @time_formatter = Lumberjack::Formatter::DateTimeFormatter.new(format)
76
+ end
77
+
78
+ # Get the Redis connection instance.
79
+ # @return [Redis] the Redis connection, either from the stored instance or by calling the proc
80
+ def redis
81
+ if @redis.is_a?(Proc)
82
+ @redis.call
83
+ else
84
+ @redis
85
+ end
86
+ end
87
+
88
+ private
89
+
90
+ def entry_as_json(entry)
91
+ data = {}
92
+ set_attribute(data, "timestamp", entry.time.to_f) unless entry.time.nil?
93
+ set_attribute(data, "time", entry.time)
94
+ set_attribute(data, "severity", entry.severity_label)
95
+ set_attribute(data, "progname", entry.progname)
96
+ set_attribute(data, "pid", entry.pid)
97
+ set_attribute(data, "message", entry.message)
98
+ set_attribute(data, "attributes", entry.attributes)
99
+
100
+ data = @formatter.format(data) if @formatter
101
+ data
102
+ end
103
+
104
+ def entry_from_json(json)
105
+ data = JSON.parse(json)
106
+ time = Time.at(data["timestamp"]) if data["timestamp"]
107
+ severity = data["severity"]
108
+ progname = data["progname"]
109
+ pid = data["pid"]
110
+ message = data["message"]
111
+ attributes = data["attributes"] || data["tags"] # Fallback to tags for compatibility with 1.x format
112
+ LogEntry.new(time, severity, message, progname, pid, attributes)
113
+ end
114
+
115
+ def set_attribute(data, key, value)
116
+ return if value.nil?
117
+
118
+ if (value.is_a?(Time) || value.is_a?(DateTime)) && @time_formatter
119
+ value = @time_formatter.call(value)
120
+ end
121
+
122
+ if key.is_a?(Array)
123
+ unless key.empty?
124
+ if key.size == 1
125
+ data[key.first] = value
126
+ else
127
+ data[key.first] ||= {}
128
+ set_attribute(data[key.first], key[1, key.size], value)
129
+ end
130
+ end
131
+ elsif key.respond_to?(:call)
132
+ hash = key.call(value)
133
+ if hash.is_a?(Hash)
134
+ data.merge!(hash)
135
+ end
136
+ else
137
+ data[key] = value unless key.nil?
138
+ end
139
+ end
140
+
141
+ def default_formatter
142
+ formatter = Lumberjack::Formatter.new.clear
143
+ object_formatter = Lumberjack::Formatter::ObjectFormatter.new
144
+ formatter.add(String, object_formatter)
145
+ formatter.add(Object, object_formatter)
146
+ formatter.add(Enumerable, Formatter::StructuredFormatter.new(formatter))
147
+ formatter.add(Exception, Formatter::InspectFormatter.new)
148
+ end
149
+
150
+ def dump_json(data)
151
+ JSON.generate(json_safe(data))
152
+ end
153
+
154
+ def json_safe(value)
155
+ return nil if value.nil?
156
+
157
+ # Check if the as_json method is defined takes no parameters
158
+ as_json_arity = value.method(:as_json).arity if value.respond_to?(:as_json)
159
+
160
+ if as_json_arity == 0 || as_json_arity == -1
161
+ value.as_json
162
+ elsif value.is_a?(Hash)
163
+ value.transform_values { |v| json_safe(v) }
164
+ elsif value.is_a?(Enumerable)
165
+ value.collect { |v| json_safe(v) }
166
+ else
167
+ value
168
+ end
169
+ end
170
+ end
171
+ end
@@ -1,130 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lumberjack'
4
- require 'multi_json'
5
- require 'redis'
6
-
7
- module Lumberjack
8
- # This Lumberjack device logs output to a redis list. The redis list will automatically truncate
9
- # to a given size to prevent running out of memory on the server. This is not inteneded to be a
10
- # scalable logging solution, but it can be useful as an additional logging tool to expose recent logs.
11
- class RedisDevice < Device
12
-
13
- attr_reader :name, :ttl, :limit
14
-
15
- # Create a device. The name will be used as the key for the log entris in redis.
16
- #
17
- # The redis object can either be a `Redis` instance or a block that yields a `Redis`
18
- # instance.
19
- #
20
- # You can also specify a time to live in seconds (ttl) and set the limit for the size of the list.
21
- def initialize(name:, redis:, limit: 10_000, ttl: nil)
22
- @name = name
23
- @redis = redis
24
- @ttl = ttl.to_i
25
- @limit = limit
26
- end
27
-
28
- # Write an entry to the list in redis
29
- def write(entry)
30
- data = entry_as_json(entry)
31
- json = MultiJson.dump(data)
32
- redis.multi do |transaction|
33
- transaction.lpush(name, json)
34
- transaction.ltrim(name, 0, limit - 1)
35
- transaction.expire(name, ttl) if ttl && ttl > 0
36
- end
37
- end
38
-
39
- # Read a set number of entries from the list. The result will be an array of
40
- # Lumberjack::LogEntry objects.
41
- def read(count = limit)
42
- docs = redis.lrange(name, 0, count - 1)
43
- docs.collect { |json| entry_from_json(json) }
44
- end
45
-
46
- def datetime_format
47
- @time_formatter.format if @time_formatter
48
- end
49
-
50
- def datetime_format=(format)
51
- @time_formatter = Lumberjack::Formatter::DateTimeFormatter.new(format)
52
- end
53
-
54
- def redis
55
- if @redis.is_a?(Proc)
56
- @redis.call
57
- else
58
- @redis
59
- end
60
- end
61
-
62
- private
63
-
64
- def entry_as_json(entry)
65
- data = {}
66
- set_attribute(data, "timestamp", entry.time.to_f) unless entry.time.nil?
67
- set_attribute(data, "time", entry.time)
68
- set_attribute(data, "severity", entry.severity_label)
69
- set_attribute(data, "progname", entry.progname)
70
- set_attribute(data, "pid", entry.pid)
71
- set_attribute(data, "message", entry.message)
72
- set_attribute(data, "tags", entry.tags)
73
-
74
- unless @tags_key.nil?
75
- tags ||= {}
76
- set_attribute(data, @tags_key, tags)
77
- end
78
-
79
- data = @formatter.format(data) if @formatter
80
- data
81
- end
82
-
83
- def entry_from_json(json)
84
- data = MultiJson.load(json)
85
- time = Time.at(data["timestamp"]) if data["timestamp"]
86
- severity = data["severity"]
87
- progname = data["progname"]
88
- pid = data["pid"]
89
- message = data["message"]
90
- tags = data["tags"]
91
- LogEntry.new(time, severity, message, progname, pid, tags)
92
- end
93
-
94
- def set_attribute(data, key, value)
95
- return if value.nil?
96
-
97
- if (value.is_a?(Time) || value.is_a?(DateTime)) && @time_formatter
98
- value = @time_formatter.call(value)
99
- end
100
-
101
- if key.is_a?(Array)
102
- unless key.empty?
103
- if key.size == 1
104
- data[key.first] = value
105
- else
106
- data[key.first] ||= {}
107
- set_attribute(data[key.first], key[1, key.size], value)
108
- end
109
- end
110
- elsif key.respond_to?(:call)
111
- hash = key.call(value)
112
- if hash.is_a?(Hash)
113
- data.merge!(Lumberjack::Tags.stringify_keys(hash))
114
- end
115
- else
116
- data[key] = value unless key.nil?
117
- end
118
- end
119
-
120
- def default_formatter
121
- formatter = Formatter.new.clear
122
- object_formatter = Lumberjack::Formatter::ObjectFormatter.new
123
- formatter.add(String, object_formatter)
124
- formatter.add(Object, object_formatter)
125
- formatter.add(Enumerable, Formatter::StructuredFormatter.new(formatter))
126
- formatter.add(Exception, Formatter::InspectFormatter.new)
127
- end
128
-
129
- end
130
- end
3
+ require_relative "lumberjack/redis_device"
@@ -1,16 +1,22 @@
1
1
  Gem::Specification.new do |spec|
2
- spec.name = 'lumberjack_redis_device'
3
- spec.version = File.read(File.expand_path("../VERSION", __FILE__)).strip
4
- spec.authors = ['Brian Durand']
5
- spec.email = ['bbdurand@gmail.com']
2
+ spec.name = "lumberjack_redis_device"
3
+ spec.version = File.read(File.join(__dir__, "VERSION")).strip
4
+ spec.authors = ["Brian Durand"]
5
+ spec.email = ["bbdurand@gmail.com"]
6
6
 
7
7
  spec.summary = "A logging device for the lumberjack gem that writes log entries as JSON documentspec."
8
8
  spec.homepage = "https://github.com/bdurand/lumberjack_redis_device"
9
9
  spec.license = "MIT"
10
10
 
11
+ spec.metadata = {
12
+ "homepage_uri" => spec.homepage,
13
+ "source_code_uri" => spec.homepage,
14
+ "changelog_uri" => "#{spec.homepage}/blob/main/CHANGE_LOG.md"
15
+ }
16
+
11
17
  # Specify which files should be added to the gem when it is released.
12
18
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
13
- ignore_files = %w(
19
+ ignore_files = %w[
14
20
  .gitignore
15
21
  .travis.yml
16
22
  Appraisals
@@ -19,18 +25,17 @@ Gem::Specification.new do |spec|
19
25
  Rakefile
20
26
  gemfiles/
21
27
  spec/
22
- )
23
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
- `git ls-files -z`.split("\x0").reject{ |f| ignore_files.any?{ |path| f.start_with?(path) } }
28
+ ]
29
+ spec.files = Dir.chdir(__dir__) do
30
+ `git ls-files -z`.split("\x0").reject { |f| ignore_files.any? { |path| f.start_with?(path) } }
25
31
  end
26
32
 
27
- spec.require_paths = ['lib']
33
+ spec.require_paths = ["lib"]
34
+
35
+ spec.required_ruby_version = ">=2.7"
28
36
 
29
- spec.add_dependency "lumberjack", ">=1.1"
30
- spec.add_dependency "multi_json"
37
+ spec.add_dependency "lumberjack", ">=2.0"
31
38
  spec.add_dependency "redis"
32
39
 
33
- spec.add_development_dependency("rspec", ["~> 3.0"])
34
- spec.add_development_dependency "rake"
35
- spec.add_development_dependency "fakeredis"
40
+ spec.add_development_dependency "bundler"
36
41
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lumberjack_redis_device
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Durand
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2020-01-05 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: lumberjack
@@ -16,28 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.1'
18
+ version: '2.0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '1.1'
27
- - !ruby/object:Gem::Dependency
28
- name: multi_json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
25
+ version: '2.0'
41
26
  - !ruby/object:Gem::Dependency
42
27
  name: redis
43
28
  requirement: !ruby/object:Gem::Requirement
@@ -53,35 +38,7 @@ dependencies:
53
38
  - !ruby/object:Gem::Version
54
39
  version: '0'
55
40
  - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: fakeredis
41
+ name: bundler
85
42
  requirement: !ruby/object:Gem::Requirement
86
43
  requirements:
87
44
  - - ">="
@@ -94,24 +51,29 @@ dependencies:
94
51
  - - ">="
95
52
  - !ruby/object:Gem::Version
96
53
  version: '0'
97
- description:
98
54
  email:
99
55
  - bbdurand@gmail.com
100
56
  executables: []
101
57
  extensions: []
102
58
  extra_rdoc_files: []
103
59
  files:
60
+ - ".github/dependabot.yml"
61
+ - ".github/workflows/continuous_integration.yml"
62
+ - ".standard.yml"
104
63
  - CHANGE_LOG.md
105
- - MIT_LICENSE
64
+ - MIT_LICENSE.txt
106
65
  - README.md
107
66
  - VERSION
67
+ - lib/lumberjack/redis_device.rb
108
68
  - lib/lumberjack_redis_device.rb
109
69
  - lumberjack_redis_device.gemspec
110
70
  homepage: https://github.com/bdurand/lumberjack_redis_device
111
71
  licenses:
112
72
  - MIT
113
- metadata: {}
114
- post_install_message:
73
+ metadata:
74
+ homepage_uri: https://github.com/bdurand/lumberjack_redis_device
75
+ source_code_uri: https://github.com/bdurand/lumberjack_redis_device
76
+ changelog_uri: https://github.com/bdurand/lumberjack_redis_device/blob/main/CHANGE_LOG.md
115
77
  rdoc_options: []
116
78
  require_paths:
117
79
  - lib
@@ -119,15 +81,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
81
  requirements:
120
82
  - - ">="
121
83
  - !ruby/object:Gem::Version
122
- version: '0'
84
+ version: '2.7'
123
85
  required_rubygems_version: !ruby/object:Gem::Requirement
124
86
  requirements:
125
87
  - - ">="
126
88
  - !ruby/object:Gem::Version
127
89
  version: '0'
128
90
  requirements: []
129
- rubygems_version: 3.0.3
130
- signing_key:
91
+ rubygems_version: 3.6.9
131
92
  specification_version: 4
132
93
  summary: A logging device for the lumberjack gem that writes log entries as JSON documentspec.
133
94
  test_files: []
File without changes